ID、Area、Debug、Error、Info、Warning、Fatal プロパティを持つモデルがあり、このオブジェクトのリストを 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");
}
問題は、行のチェックボックスをオフにしてフォームを送信すると、対応する行の値が false になりますが、このチェックボックスをオンにしてフォームを送信しても true にならず、この場合、ブレークポイントを設定すると保存アクションでは、値がまだ false であることがわかります。
助けてくれてありがとう。