1

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 であることがわかります。

助けてくれてありがとう。

4

1 に答える 1

0

これがあなたの問題に関連しているかどうかはわかりませんが、同様の結果が得られました。チェックボックスをオンにして無効にしたフォームを投稿すると、投稿された値がfalseに設定されます。投稿する前に属性を削除すると"disabled"、問題が解決しました。

于 2013-03-09T06:23:18.157 に答える