MVC模型没有绑定到字典
我正在使用ASP.Net MVC4(Razor)。 我有以下代码:
Dictionary occasionList = new Dictionary()
关键是一个场合类别的字符串。 occassion对象有3个属性: isAttending(bool)
, ID(int)
和Name(string)
在我的cshtml文件中,我执行以下操作:
@foreach(string s in model.occasionList .Keys) { foreach(var o in model.occasionList .Keys[s]) { @Html.CheckBoxFor(m=>m.occasionList[s].FirstOrDefault(ev=>ev.ID == o.ID).isAttending); } }
这完全绑定了加载,我在SQL中手动检查的复选框。 但是,当我将此模型POST回服务器时,occasionList字典为空。 该模型绑定正常,因为我仍然返回模型中的其他属性。
有任何想法吗?
谢谢,Dom
模型绑定器将字典视为集合,如果您将字典想象为IEnumerable
,则很容易理解它为什么不绑定。
什么@Html.CheckBoxFor(m=>m.occasionList[s].FirstOrDefault(ev=>ev.ID == o.ID).isAttending);
正在产生的是:
所以钥匙丢失了。
试试这个:
@Html.Hidden("occasionList.Index", s) @Html.CheckBoxFor(m=>m.occasionList[s].FirstOrDefault(ev=>ev.ID == o.ID).isAttending); @Html.HiddenFor(m=>m.occasionList[s].Key)
第一个隐藏是因为您可能会使索引无序, 并且明确提供“.Index”是使模型绑定器在这些情况下工作的唯一方法。
这是描述模型绑定到集合的另一种资源。