2013-03-09 74 views
0

我有一個ID,Area,Debug,Error,Info,Warning,致命屬性的模型,我想用MVC中的模型綁定器綁定這個對象的列表。綁定複雜對象到模型的列表

@for (int i = 0; i < Model.Count(); i++) 
    { 
     <tr> 
      <td> 
       <input type="hidden" name="[@i].ID" value="@Model.ElementAt(i).ID"/> 
      </td> 
      <td> 
       <input type="hidden" name="[@i].Area" value="@Model.ElementAt(i).Area" /> 
       @Model.ElementAt(i).Area 
      </td> 
      <td> 
       <input name="[@i].Debug" type="checkbox" id="[@i].Debug" class="regular-checkbox" @(Model.ElementAt(i).Debug ? "checked='checked'" : "") value="@Model.ElementAt(i).Debug"/><label for="[@i].Debug" ></label> 
      </td> 
      <td> 
       <input name="[@i].Error" type="checkbox" id="[@i].Error" class="regular-checkbox" @(Model.ElementAt(i).Error ? "checked='checked'" : "") value="@Model.ElementAt(i).Error"/><label for="[@i].Error" ></label> 
      </td> 
      <td> 
       <input name="[@i].Info" type="checkbox" id="[@i].Info" class="regular-checkbox" @(Model.ElementAt(i).Info ? "checked='checked'" : "") value="@Model.ElementAt(i).Info"/><label for="[@i].Info" ></label> 
      </td> 
      <td> 
       <input name="[@i].Warnning" type="checkbox" id="[@i].Warnning" class="regular-checkbox" @(Model.ElementAt(i).Warnning ? "checked='checked'" : "") value="@Model.ElementAt(i).Warnning"/><label for="[@i].Warnning" ></label> 
      </td> 
      <td> 
       <input name="[@i].Fatal" type="checkbox" id="[@i].Fatal" class="regular-checkbox" @(Model.ElementAt(i).Fatal ? "checked='checked'" : "") value="@Model.ElementAt(i).Fatal"/><label for="[@i].Fatal" ></label> 
      </td> 

     </tr> 
    } 

而且我有一個動作:

[HttpPost] 
    public ActionResult EditAll(IList<LogSetting> logsettings) 
    { 
     if (ModelState.IsValid) 
     { 
      foreach (var logsetting in logsettings) 
      { 
       db.LogSettings.Attach(logsetting); 
       db.ObjectStateManager.ChangeObjectState(logsetting, EntityState.Modified); 
      } 
      db.SaveChanges(); 
     } 

     return RedirectToAction("Index"); 
    } 

的問題是,當我取消選中複選框一行,並提交表單對應的行成爲虛假的價值,但這時如果我檢查了這複選框並提交表單它不會變成true,並且在這種情況下,當我在保存操作中設置斷點時,我看到的值是stil false。

感謝您的任何幫助。

+0

當您在您的操作中設置斷點時,是否會獲得具有預期行數的列表? – 2013-03-09 05:52:07

回答

0

不知道這是否與您的問題有關,但我有類似的結果。當我發佈一個複選框選中的表單和禁用時,發佈的值將被設置爲false。發佈前刪除"disabled"屬性解決了問題。