[英]MVC model not binding to dictionary
我正在使用ASP.Net MVC4(剃刀)。 我有以下代碼:
Dictionary<string, OccasionObject> occasionList = new Dictionary<string, OccasionObject>()
關鍵是場合類別的字符串。 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中手動選中了復選框。 但是,當我將此模型發布回服務器時,natureList字典為null。 該模型具有良好的綁定性能,因為我仍然擁有模型中的其他屬性。
有任何想法嗎?
謝謝,唐
模型綁定程序將字典視為一個集合,如果您將字典想象為IEnumerable<KeyValuePair<string, IEnumerable<OccasionObject>>>
那么很容易理解為什么它沒有綁定。
什么@Html.CheckBoxFor(m=>m.occasionList[s].FirstOrDefault(ev=>ev.ID == o.ID).isAttending);
正在生成的是:
<input type="checkbox" name="occasionList[0].Value.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”是使模型綁定程序在這種情況下工作的唯一方法。
這是另一個描述模型與集合綁定的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.