0
我将一个List传递给MVC视图并为列表中的每个对象生成复选框(复选框命名为t.Name)。从MVC中动态创建的控件检索回传,而无需使用FormCollection
我希望能够判断表单发布后选中哪个复选框。但是,我想避免使用FormCollection对象。有没有办法做到这一点?
我将一个List传递给MVC视图并为列表中的每个对象生成复选框(复选框命名为t.Name)。从MVC中动态创建的控件检索回传,而无需使用FormCollection
我希望能够判断表单发布后选中哪个复选框。但是,我想避免使用FormCollection对象。有没有办法做到这一点?
设置您的复选框的名称为“MyObject [”+ index +“] .Checked”,并且每个复选框还将一个隐藏的输入字段命名为“MyObject [”+ index +“] .Name。 “的值设置为t.Name。
如果您以这种方式命名您的字段,默认的模型联编程序可以将您的表单值和映射到具有Name属性和Checked属性的对象列表。
我会尝试像下面这样:
<% foreach(var t in Model)
{ %>
<div>
<%= Html.Hidden("MyObject[" + index + "].Name", t.Name, new { id = "MyObject_" + index + "_Name" }) %>
<%= Html.Checkbox("MyObject[" + index + "].Checked", false, new { id = "MyObject_" + index + "_Checked" }) %>
</div><%
} %>
我用的是匿名类型与id属性,这样的MVC框架组件不会产生无效的ID值的HTML元素,但它是不是真的必要。
你的行动处理后会是这个样子:
[HttpPost]
ActionResult MyAction(IList<MyObject> objects)
{
foreach (MyObject obj in objects)
{
if (obj.Checked)
{
// ...
}
else
{
// ...
}
}
return View();
}