未设置MVC下拉列表值

问题描述 投票:4回答:2

我确定我缺少明显的东西,但这真让我发疯!如果我指定html选项,则不会设置我的下拉列表的值。

在我的控制器中,我通过以下方式检索下拉列表的选项:

ViewData [“ Coordinator”] = new SelectList(userRepository.GetIdUserList(1),                          “ ID”,“ Signature”,edCenter.Coordinator);

在我看来,我在下拉列表中填充:

Html.DropDownList(“ Coordinator”,(IEnumerable)ViewData [“ Coordinator”],                   新的{style =“ width:175px”})

下拉列表中的值已完美填充,但未选择列表的值。

但是,如果我只是使用:

Html.DropDownList(“ Coordinator”);

一切正常。

怎么了?

asp.net-mvc
2个回答
4
投票

昨天我在一个类似的问题上苦苦挣扎,因此,如果您仍然得到相同的结果,则还需要考虑另一件事。 DropDownList有时会忽略SelectList的选定值,这很烦人,但是它所做的是尝试通过使用字段名称作为键从ModelStateViewData和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
投票

DropDown Helper的第二个参数采用IEnumerable(Of SelectListItem)类型的对象,但是您传递了IEnumerable(Of SelectList)类型的对象因此,应如何编写代码:

     <%=Html.DropDownList("Coordinator",((SelectList)ViewData["Coordinator"]).AsEnumerable(),
 new {style="width:175px"}) %>
© www.soinside.com 2019 - 2024. All rights reserved.