【发布时间】:2013-04-14 22:28:26
【问题描述】:
我有一个使用 Razor 视图引擎的 MVC 4 项目,发现了一些奇怪的东西:
我在视图中有以下代码行:
@Html.DropDownListFor(model => model.TypA.Enum, Html.GetEnumList())
这很好用(Html.GetEnumList() 返回一个包含有效项目的List<SelectListItem>),但现在我有一个TypeA 列表,我在for 循环中显示/编辑:
@for(int i = 0; i < Model.ListOfA.Count; ++i)
{
@Html.DropDownListFor(model => model.ListOfA[i].Enum, Html.GetEnumList())
}
现在在这种情况下,如果我编辑现有项目,则不会像第一种情况那样在下拉列表中预先选择当前值。如果我手动更改该值并将其发送回服务器,则会在列表中的每个对象中设置正确的值。
有谁知道为什么预选在这里不起作用?
现在我通过将当前值提供给GetEnumList(model.ListOfA[i].Enum) 并在相应的SelectListItem 上将Selected 属性设置为true 做了一个解决方法,但我认为这不是必需的,因为它适用于第一种情况……
【问题讨论】:
-
能否请您包含生成 SelectListItem 列表的代码?另外,您看到的行为是什么?是否所有选定的值都与第一个选定的选项匹配?
-
你设置断点并确认ListOfA数组设置正确了吗?
-
您的列表中有默认选项吗?
标签: .net asp.net-mvc c#-4.0 razor asp.net-mvc-4