复选框的模型绑定

Model binding for Checkboxes

我试图将一些复选框绑定到模型,但我得到空值。

所以基本上,我有 designationList:用户可以检查或不检查的可能性。有 id name 和 description(UI 中用户使用的名称和描述,Id 知道选择的 id) 模型应该将选定的值绑定到 "designation" 字段,可以将 id 保存为列表。

这是我制作选择框的方法:

@foreach (var item in Model.designationList)
                {
                    <label>
                        @Html.CheckBox("CheckBoxName", new { id = "designation" + item.id, value = item.id }) @item.name: <span style="font-weight:lighter">@item.description</span>
                    </label>
                    <br />
                }

这是我们感兴趣的模型部分:

        [Required]
        public List<IncidentDesignation> designationList { get; set; }
        [Required]
        public List<int> designation { get; set; }

这是子对象:

public class IncidentDesignation
    {
        public int id { get; set; }
        public string name { get; set; }
        public string description { get; set; }
    }

最后,这是 Html 生成的:

<div class="col-md-10">
   <label>
   <input id="designation1" name="CheckBoxName" type="checkbox" value="1"><input name="CheckBoxName" type="hidden" value="false"> Acte dangereux: <span style="font-weight:lighter">action qui met en danger une ou plusieurs personnes</span>
   </label>
   <br>
   <label>
   <input id="designation2" name="CheckBoxName" type="checkbox" value="2"><input name="CheckBoxName" type="hidden" value="false"> Situation dangereuse: <span style="font-weight:lighter">situation qui tôt ou tard, conduit à blesser des personnes ou causer des dégâts matériels importants</span>
   </label>
   <br>
   <label>
   <input id="designation3" name="CheckBoxName" type="checkbox" value="3"><input name="CheckBoxName" type="hidden" value="false"> Presqu'accident: <span style="font-weight:lighter">évènement qui aurait pu causer un accident de travail avec ou sans dégâts matériels</span>
   </label>
   <br>
   <label>
   <input id="designation4" name="CheckBoxName" type="checkbox" value="4"><input name="CheckBoxName" type="hidden" value="false"> Accident: <span style="font-weight:lighter">événement avec dommages corporels</span>
   </label>
   <br>
   <label>
   <input id="designation5" name="CheckBoxName" type="checkbox" value="5"><input name="CheckBoxName" type="hidden" value="false"> Environnement: <span style="font-weight:lighter">situation qui risque d'engendrer un impact</span>
   </label>
   <br>
   <label>
   <input id="designation6" name="CheckBoxName" type="checkbox" value="6"><input name="CheckBoxName" type="hidden" value="false"> Incendie: <span style="font-weight:lighter">incendie ayant nécéssité une intervention afin de l'éteindre</span>
   </label>
   <br>
   <span class="text-danger field-validation-valid" data-valmsg-for="incidentDate" data-valmsg-replace="true"></span>
</div>

在此先感谢您的帮助

编辑:

在测试中添加电流控制器:

[HttpPost]
        public ActionResult Create(IncidentViewModel model)
        {
            if (ModelState.IsValid)
            { 
                // add record in db and retrieve IncidentId
                // Go to Add pictures with provided ID
            }
            return RedirectToAction("Create");
        }

我在 if 语句断点时看到空值。

像下面这样使用

@foreach (var item in Model.designationList)
{
    <label>
        <input type="checkbox" value="@item.id" name="CheckBoxName" id = "designation" + @item.id />@item.name: <span style="font-weight:lighter">@item.description</span>
    </label>
    <br />
}