如何基于行中另一列的值向MVC网格动态分配值

时间:2019-02-27 18:13:56

标签: c# asp.net-mvc grid

我现在有一个数据集,该数据集有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);

我的猜测是,我需要使用脚本来完成此操作,但是我不确定如何动态访问行和字段。

1 个答案:

答案 0 :(得分:0)

在您描述的情况下,我看不到需要动态数据网格。

使用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]
            })
        }
    }
}

参考文献:

  1. Use ViewModels to manage data & organize code in ASP.NET MVC applications
  2. ASP.NET MVC View Model Patterns