复选框的模型绑定
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 />
}
我试图将一些复选框绑定到模型,但我得到空值。
所以基本上,我有 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 />
}