【发布时间】:2017-03-20 02:59:08
【问题描述】:
这会很长,所以提前道歉。在一个 ASP.NET MVC 应用程序中,我正在编写一个部分控件,它是一个搜索面板。现在这个面板有
- 课程选择下拉菜单,但使用表格而不是列表(表格有一个复选框,两列带有组标题 - 班级名称和学生人数)
- 作为下拉列表的年份选择(希望是最简单的)
- 带有复选框和组标题的指标列表
我已经定义了一个视图模型如下
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; }
}
我的问题是:
显示类和指标的正确控件是什么(显示为下拉列表的网格/表格)
我是直接使用 ado.net 实体还是通过存储过程使用?
如果我使用存储过程,我将不得不定义一个不同的实体,该实体仅具有存储过程正在处理的特定属性,还是有其他方法?
-
在视图(cshtml 文件)上,我如何使用这些属性与下拉列表或表格绑定,例如类似:
- @Html.LabelFor(m => m.Classes)
- @Html.DropDownListFor(m => m.Classes, new { @class= "form-control" })
简而言之,最好的方法是什么?
这是一张图片来说明
【问题讨论】:
-
首先,您的视图模型不正确。为了使用
DropDownListFor()创建一个<select>元素,您的视图模型需要一个绑定到的属性(例如int SelectedYear)和一个SelectList的属性(IEnumerable<SelectListItem>) - 请参阅this question/answer 以获取典型代码) -
其次,
DropDownListFor()方法会创建一个<select>元素,而不是图像中的复杂下拉菜单,为此您需要创建或找到适合您需要的自定义 jquery 插件. -
第三,你的问题太宽泛了(你已经问了其中 4 个)并且基于意见。
-
我看到 jquery 插件 嗯我有一个剑道许可证你能推荐任何适合我需要的剑道控件吗?好吧,我明白你关于选择属性的观点!谢谢
-
寻求建议是题外话 :) 你需要自己做研究。
标签: c# asp.net-mvc entity-framework drop-down-menu html.dropdownlistfor