我正在使用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 > @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 > @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 > @HTML.CheckBoxFor(m => m.ToExport) </td></tr>
然后在主视图中
@HTML.EditorFor(m => m.ExportingGroups)
EditorFor()方法将根据模板为集合中的每个项生成正确的HTML.
总结以上是内存溢出为你收集整理的c# – 剃刀中的多个复选框(使用foreach)全部内容,希望文章能够帮你解决c# – 剃刀中的多个复选框(使用foreach)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)