C# 不使用FormCollection从MVC中动态创建的控件检索回发

C# 不使用FormCollection从MVC中动态创建的控件检索回发,c#,asp.net,asp.net-mvc,postback,formcollection,C#,Asp.net,Asp.net Mvc,Postback,Formcollection,我将向MVC视图传递一个列表,并为列表中的每个对象生成复选框(复选框名为t.Name) 我想能够告诉哪些复选框被选中,一旦表单被张贴。但是,我希望避免使用FormCollection对象。有什么方法可以做到这一点吗?将复选框的名称设置为“MyObject[“+index+”].Checked”,并为每个复选框添加一个名为“MyObject[“+index+”].name”的隐藏输入字段,其值设置为t.name 如果这样命名字段,默认模型绑定器可以采用表单值,并将它们映射到具有名称属性和选中属性的

我将向MVC视图传递一个列表,并为列表中的每个对象生成复选框(复选框名为t.Name)


我想能够告诉哪些复选框被选中,一旦表单被张贴。但是,我希望避免使用FormCollection对象。有什么方法可以做到这一点吗?

将复选框的名称设置为“MyObject[“+index+”].Checked”,并为每个复选框添加一个名为“MyObject[“+index+”].name”的隐藏输入字段,其值设置为t.name

如果这样命名字段,默认模型绑定器可以采用表单值,并将它们映射到具有名称属性和选中属性的对象列表

我会尝试以下方法:

<% 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><%
} %>

我使用匿名类型with id属性,这样MVC框架组件就不会生成id值无效的HTML元素,但这并不是必需的

您处理邮件的操作如下所示:

[HttpPost]
ActionResult MyAction(IList<MyObject> objects)
{
    foreach (MyObject obj in objects)
    {
        if (obj.Checked)
        {
            // ...
        }
        else
        {
            // ...
        }
    }

    return View();
}
[HttpPost]
ActionResult MyAction(IList对象)
{
foreach(对象中的MyObject对象)
{
如果(对象已选中)
{
// ...
}
其他的
{
// ...
}
}
返回视图();
}