我确定我错过了一些明显的东西,但这让我疯了!如果我指定html选项,则我的下拉列表的值不会设置。
在我的控制器中,我使用以下命令检索下拉列表的选项:
ViewData["Coordinator"] = new SelectList(userRepository.GetIdUserList(1), "ID", "Signature",edCenter.Coordinator);
在我看来,我用以下内容填充下拉列表:
Html.DropDownList("Coordinator",(IEnumerable) ViewData["Coordinator"], new {style="width:175px"})
下拉值完全填充,但未选择列表的值。
但是,如果我只是使用:
Html.DropDownList("Coordinator");
一切正常。
出了什么问题?
答案 0 :(得分:4)
昨天我遇到了类似问题,所以如果你仍然得到同样的结果,还有一件事需要考虑。 DropDownList有时会忽略SelectList的选定值,这很烦人,但它的作用是尝试通过使用字段名作为键从ModelState,ViewData和Model中获取所选值。 在您的情况下,您将列表存储在ViewData [“Coordinator”]中,该键与DropDown具有相同的名称。试试这个:
ViewData["CoordinatorList"] = new SelectList(userRepository.GetIdUserList(1),
"ID", "Signature",edCenter.Coordinator);
ViewData["Coordinator"] = dCenter.Coordinator;
然后在视图中:
<%=Html.DropDownList("Coordinator",((SelectList)ViewData["CoordinatorList"]).AsEnumerable(),
new {style="width:175px"}) %>
如果你想看看窗帘后面发生了什么,打开反射器(或获取MVC源)并浏览此方法: System.Web.Mvc.Html.SelectExtensions.SelectInternal()
答案 1 :(得分:1)
DropDown Helper的第二个参数接受一个IEnumerable类型的对象(Of SelectListItem),但是你传递了一个IEnumerable类型的对象(Of SelectList) 所以这个代码应该如何编写:
<%=Html.DropDownList("Coordinator",((SelectList)ViewData["Coordinator"]).AsEnumerable(),
new {style="width:175px"}) %>