Entity Framework 最佳实践 drop-down 列表绑定

Entity Framework best practices drop-down list binding

这会很长,所以提前致歉。在 ASP.NET MVC 应用程序中,我正在编写一个作为搜索面板的部分控件。现在这个面板有

  1. class 选择 drop-down 但使用 table 而不是列表(table 有一个复选框,两列带有组 headers - class姓名和 no.of 学生)
  2. 年份选择作为下拉列表(希望是最简单的)
  3. 带复选框和组的指标列表 headers

我定义了一个View模型如下

public class SearchControlModel
{
    public List<Class> Classes {get; set;}
    public List<Year> Years { get; set; }
    public List<Indicator> Indicators { get; set; }
 }

我的实体在哪里:

public class Class
{

    public int classID { get; set; }
    public Nullable<int> grade { get; set; }
    public string classname { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}

public class Indicator
{
    public int IndicatorID { get; set; }
    public string IndicatorDescription { get; set; }

    public virtual ICollection<Student> Students { get; set; }

}

我的问题是:

  1. 显示 class 和指标(grid/table 显示为 drop-down)的正确控件是什么

  2. 我是直接使用 ado.net 实体还是通过存储过程?

  3. 如果我使用存储过程,我将不得不定义一个不同的实体,它只具有存储过程正在处理的特定属性,或者有其他方法吗?

  4. 在视图(cshtml 文件)上如何使用这些属性与 drop-down 或 table 绑定,例如类似于:

    • @Html.LabelFor(m => m.Classes)
    • @Html.DropDownListFor(m => m.Classes, new { @class = "form-control" })

简而言之,最好的方法是什么?

这里用一张图来说明一下

我正在使用 bootstrap-multiselect 自定义控件,但仍然想知道它是否能够在其中添加 detail/adjacent 列