Checkboxes的模型绑定

时间:2015-01-05 09:06:49

标签: asp.net-mvc asp.net-mvc-4 asp-classic asp.net-mvc-5 model-binding

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

所以基本上,我有一个指定列表:用户可以检查或不检查的可能性。有id名称和描述(用户在UI中使用的名称和描述,以及用于知道所选id的ID) 模型应该将选定的值绑定到“指定”字段,这可以将id保存为List。

以下是我制作selectBoxes的方法:

@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 Generated:

<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语句时,我看到空值。

1 个答案:

答案 0 :(得分:1)

使用如下

@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 />
}