簡體   English   中英

MVC模型未綁定到字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM