MVC2 - DropDownListFor复杂属性 - 没有选定项

时间:2013-03-20 06:55:54

标签: asp.net-mvc asp.net-mvc-2

我正在使用ASP.NET MVC 2.0,但显然这也是MVC 3.0中的一个问题。

基本上,如果您有“复杂”的媒体资源名称,则Html.DropDownListFor不会设置任何SelectListItem.Selected = true

这样可行(ViewData.StatesIEnumerable<SelectListItem>)。

<td><%= Html.DropDownListFor( m => m.State, ViewData.States ) %></td>

但这不是:

<td><%= Html.DropDownListFor( m => m.CaseFields[i].State, ViewData.States ) %></td>

我看到了this QA where the answerer correctly explained the problem,但是他使用SelectList作为DropDownListFor的参数的解决方案在我的情况下不起作用 - 我得到完全相同的结果({{1}的加载}元素但不是单个<option>属性。)

我很想重新实现selected="selected",但如果有人知道解决方法,我很乐意听到它!

1 个答案:

答案 0 :(得分:0)

我通过在CodePlex上复制MVC项目中的源并进行一些更改来重新实现DropDownListFor来解决这个问题。

我做的主要更改是将ViewData.Eval(在MVC 2和3中不支持索引属性)的调用替换为ModelMetadata.FromLambdaExpression().Model,并且效果很好。

我还添加了对数字枚举值的支持,因为如果使用字符串(名称)值而不是数值,DropDownListFor仅绑定枚举值。