我确定我缺少明显的东西,但这真让我发疯!如果我指定html选项,则不会设置我的下拉列表的值。
在我的控制器中,我通过以下方式检索下拉列表的选项:
ViewData [“ Coordinator”] = new SelectList(userRepository.GetIdUserList(1), “ ID”,“ Signature”,edCenter.Coordinator);
在我看来,我在下拉列表中填充:
Html.DropDownList(“ Coordinator”,(IEnumerable)ViewData [“ Coordinator”], 新的{style =“ width:175px”})
下拉列表中的值已完美填充,但未选择列表的值。
但是,如果我只是使用:
Html.DropDownList(“ Coordinator”);
一切正常。
怎么了?
昨天我在一个类似的问题上苦苦挣扎,因此,如果您仍然得到相同的结果,则还需要考虑另一件事。 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()
DropDown Helper的第二个参数采用IEnumerable(Of SelectListItem)类型的对象,但是您传递了IEnumerable(Of SelectList)类型的对象因此,应如何编写代码:
<%=Html.DropDownList("Coordinator",((SelectList)ViewData["Coordinator"]).AsEnumerable(),
new {style="width:175px"}) %>