我有一个包含一大堆数据输入字段的表单,这些字段将由用户完成,包括一些元素,用户可以在这些元素中指示他们将输入多少相同的项目。这与 Phil Haack 的博客条目Model Binding To A List中使用的一样。
我成功地使用 JQuery 来创建额外的表单元素、正确索引等。我的问题是在我的控制器中实际读取这些元素的最佳方式。文章中的 Controller 只需要一个对象,IList<Product>而我的 Controller 已经需要一个对象,FormCollection form现在我也尝试发送它IList<Itmes>。
我应该将其添加到控制器预期的参数中还是通过 form["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; };
}