=谱曲};
return View(cvm); }
[HttpPost] 公共字符串索引(IEnumerable< CheckboxVM>集合) { 返回“”; }}
模型 </跨度> class锟拷页面加载。有没有办法来解决这个问题?
如果你需要一个带调试的视频,请问我很乐意发布:)
观点:(更新)
@ 模型 </跨度> recitejs1.Models.CheckboxVM
@ { ViewBag.Title锟
你不能使用 foreach 循环以生成表单控件。它会生成重复 name 属性(与您的模型没有关系)和重复 id 属性(无效的html)。
foreach
name
id
为您的模型创建自定义`EditorTemplate
在 /Views/Shared/EditorTemplates/CompoundModel.cshtml
/Views/Shared/EditorTemplates/CompoundModel.cshtml
@model recitejs1.Models.CompoundModel @Html.HiddenFor(m => m.Id) @Html.HiddenFor(m => m.CompoundName) @Html.CheckBoxFor(m => m.IsSelected) @Html.LabelFor(m => m.CompoundName)
然后在主视图中
@model recitejs1.Models.CheckboxVM .... @using (Html.BeginForm()) { @Html.EditorFor(m => m.checkboxData) <input type="submit" name="name" value="Send" /> }
该 EditorFor() 方法将为集合中的每个项生成正确的html
EditorFor()
注意:您应该在进行此更改之前和之后检查html,以更好地了解模型绑定的工作原理。
另请注意,您的POST方法参数必须是
public string Index(CheckboxVM model)
因为那是视图的基础。然而,唯一的财产 CheckboxVM 你在视图中使用的是 IEnumerable<CompoundModel> checkboxData 在这种情况下你的观点应该是
CheckboxVM
IEnumerable<CompoundModel> checkboxData
@model IEnumerable<CompoundModel> ... @Html.EditorFor(m => m)
并按原样保留POST方法(但更改GET方法)