在MVC 5之前,DropDownList在我的Razor Edit View中被搭建为:
@Html.DropDownList("EntityId", String.Empty)
但现在相当于(后MVC 5)的脚手架为:
@Html.DropDownList("EntityId", null, htmlAttributes: new { @class = "form-control" })
我想添加htmlAttributes
以保持UI一致,但DropDownList不再按可预期的EntityId (int ? EntityId)
工作。问题是如果EntityId为null,则默认项设置为列表中的第一项。如果id为null,我想要一个空白项目,如果没有,我想要一个合适的选择。
PS。我的控制器按如下方式构建列表:
ViewBag.EntityId = new SelectList(db.Entities, "EntityId", "Name", EntityId);
答案 0 :(得分:4)
使用强类型帮助程序。如果您的模型具有属性int? EntityId
,则在控制器中
ViewBag.EntityList = new SelectList(db.Entities, "EntityId", "Name")
请注意,ViewBag属性不应与model属性同名,并且不需要'SelectList`的第3个参数。
然后在视图中
@Html.DropDownListFor(m => m.EntityId, (SelectList)ViewBag.EntityList, "--Please select--", new { @class = "form-control" })
如果EntityId
为null
,则会选择第一个选项,否则如果EntityId
与您的某个选项的值匹配,则会选中该选项。
答案 1 :(得分:1)
将@HTML.DropDownList
修改为
@Html.DropDownList("EntityId", (SelectList)Viewbag.EntityList,String.Empty, new { @class = "form-control" })`