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();
}