2010-06-03 50 views

回答

1

设置您的复选框的名称为“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(); 
}