我有一個表單,其中包含一個完整的數據輸入字段的堆,將由用戶完成,包括一些元素,用戶可以指定他們將輸入多少相同的項目。這正如Phil Haack的博客文章Model Binding To A List中所使用的那樣。傳遞控制器一個FormCollection和一個IList <T>
我成功地使用JQuery來創建額外的表單元素,正確索引,等我的問題是實際閱讀我的控制器內的這些最好的方法。本文中的控制器只需要一個對象,即,而我的控制器已經期望FormCollection form
,現在我正在嘗試將其也發送給IList<Itmes>
。
我應該將此添加到控制器所期望的參數還是通過表單[「items」]或其他方式訪問?
查看
<form action="/MyItems/Add" method="post">
<input type="text" name="Title" value="" />
<input type="hidden" name="myItem.Index" value="0" />
<input id="item[0].Amount" name="item[0].Amount" type="text" value="" />
<input id="item[0].Name" name="item[0].Name" type="text" value="" />
<input type="hidden" name="myItem.Index" value="1" />
<input id="item[1].Amount" name="item[1].Amount" type="text" value="" />
<input id="item[1].Name" name="item[1].Name" type="text" value="" />
</form>
控制器
public ActionResult Add(FormCollection form)
{
string Title = form["Title"];
List<Item> Items = form["items"].ToList();
}
DTO
public class Item()
{
int Amount {get; set; };
string Name {get; set; };
}
Scott Hanselman與此相關的[博客文章](http://stackoverflow.com/questions/449138/passing-controller-a-formcollection-and-an-ilistt/450176#450176)。 Phil Haack的[博客文章](http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx)在發佈列表時也非常有用(正如原始問題中提到的那樣)。 ) – 2010-09-09 02:38:25