2010-06-03 54 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(); 
}