这是我的代码:
ViewModel
public class FooViewModel{
public Guid BarId { set;get }
}
查看:
@model IEnumerable<FooViewModel>
@foreach (var c in Model)
{
<div>
@Html.DropDownListFor(o => c.BarId , (List<SelectListItem>)ViewBag.BarCollection)
</div>
}
问题是DropDownListFor
完全创建选项,但绑定不起作用。
答案 0 :(得分:2)
您无法使用foreach
循环为集合中的项生成控件。如果您检查html,您将看到没有索引器的重复name
属性(以及重复的id
属性,这些属性是无效的html)。您需要for
的自定义EditorTemplate
循环FooViewModel
。使用for
循环(您的模型必须实现IList<T>
)
@model IList<FooViewModel>
for (int i = 0; i < Model.Count; i++)
{
@Html.DropDownListFor(m => m[i].BarId, ....)
}
注意html现在是
<select name="[0].BarId" ..>
<select name="[1].BarId" ..>
等