c# - 如何根据行中另一列的值动态地将值分配给 MVC 网格
问题描述
我目前有一个数据集,其中有 4 列的值让我们称它们为奇数低、奇数高和偶数低、偶数高,我想在网格中有两列(低和高),并根据另一列的值设置值将只是 'O' 或 'E' - 此列名为 side
这是一个快速示例(现在该列仅绑定到奇数字段)
columns.Add(model => model.ODD_LOW).Titled("Low House #").Sortable(sortable);
columns.Add(model => model.ODD_HIGH).Titled("High House #").Sortable(sortable);
columns.Add(model => model.SIDE).Titled("Side").Sortable(sortable);
我的猜测是我需要使用脚本来完成此操作,但我不确定如何动态访问行和字段。
解决方案
在您描述的场景中,我认为不需要动态数据网格。
使用 MVC 时,最好使用 ViewModel 对象来表示数据。这样,您的控制器负责从您的业务/服务层获取数据并将结果映射到您的 ViewModel 对象。
使用这种方法,您可以使用视图的属性创建一个对象,并将其绑定到您的 gridview 和其他控件。
您的 ViewModel 对象将如下所示:
public class MyViewModelItem {
public int LowHouse { get; set; }
public int HighHouse { get; set; }
public char Side { get; set; }
}
public class MyViewModel {
// Your other view's properties
public List<MyViewModelItem> List { get; set; }
}
你的控制器是这样的:
public class MyController : Controller {
private readonly IMyService myService;
public MyController()
{
myService = new MyService(); // Consider Dependency Injection
}
public ActionResult Index() {
var data = myService.List();
var myModel = MapMyModel(data);
return View(myModel);
}
private MyViewModel MapMyModel(IEnumerable<YOUR_ENTITY> data) {
var myModel = new MyViewModel();
myModel.List = new List<MyViewModelItem>();
foreach (var item in data)
{
myModel.List.Add(new MyViewModelItem {
LowHouse = item.ODD_LOW,
HighHouse = item.ODD_HIGH,
Side = [your logic]
})
}
}
}
参考:
推荐阅读
- python-3.x - 为什么 pyperclip 不将电话号码的结果复制到剪贴板
- reactjs - 为什么抛出错误的 React 组件会渲染两次?
- arrays - 如何使用路径中文件中的数组序列化 JSON 数组?
- css - 使用Bootstrap在小屏幕上如何向下移动div?
- python - 无法找到价格类 - 网络抓取
- git - 有没有办法将一个文件从一个分支复制到另一个但名称不同?
- python - 从 txt 文件读取时,为什么 python 不显示所有行?
- graphics - 如何使图像通过高分辨率测试?
- python - grpc:从 maven 将 proto 文件编译成 python 时,grpc.py 文件丢失
- ruby-on-rails - 如何在 Rails 应用程序中使用 File.new() 创建文件?