c# – 剃刀中的多个复选框(使用foreach)
发布时间:2020-12-15 18:35:10 所属栏目:百科 来源:网络整理
导读:我有一个问题,我找不到解决方案. 我正在使用Razor,这是我的VieModel类. public class GroupToExport{ public GroupToExport() { ToExport = false; } [DisplayName("Export")] public bool ToExport { get; set; } public Group Group { get; set; }}public
我有一个问题,我找不到解决方案.
我正在使用Razor,这是我的VieModel类. public class GroupToExport { public GroupToExport() { ToExport = false; } [DisplayName("Export")] public bool ToExport { get; set; } public Group Group { get; set; } } public class GroupsToExport { public GroupsToExport() { //refill list } public List<GroupToExport> ExportingGroups { get; set; } } 视图: @using (Html.BeginForm("Export","ElmahGroup",FormMethod.Post,new { id = "toExportForm" })) { //some divs <input type="submit" id="js-export-submit" value="Export" /> @foreach (var item in Model.ExportingGroups) { <tr> <td class="js-export-checkbox"> @Html.CheckBoxFor(modelItem => item.ToExport) </td> </tr> } //some divs } 控制器: public ActionResult Export(GroupsToExport model) { var groupsToExport = model.ExportingGroups.Where(x => x.ToExport).Select(x => x); throw new System.NotImplementedException(); } 在提交“ToExport”后,在Controller中,每个组的值始终为’false’.即使检查了所有组. 有人能帮助我吗?我做错了什么? 解决方法
您不能使用foreach循环来为集合生成控件.您为每个复选框(以及相关的隐藏输入)生成的html是< input type =“checkbox”name =“item.ToExport”... />.您的模型不包含名为item的属性.
使用for循环 @for(int i = 0; i < Model.ExportingGroups.Count; i++) { <tr> <td class="js-export-checkbox"> @Html.CheckBoxFor(m => m.ExportingGroups[i].ToExport) </td> </tr> } 现在你的HTML将是 <input name="ExportingGroups[0].ToExport" .../> <input name="ExportingGroups[1].ToExport" .../> 等将正确绑定到您的模型 编辑 或者,您可以使用自定义EditorTemplate for typeof GroupToExport.创建部分视图/Views/Shared/EditorTemplates/GroupToExport.cshtml @model yourAssembly.GroupToExport <tr> <td class="js-export-checkbox"> @Html.CheckBoxFor(m => m.ToExport) </td> </tr> 然后在主视图中 @Html.EditorFor(m => m.ExportingGroups) EditorFor()方法将根据模板为集合中的每个项生成正确的html. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |