我有一个包含一大堆数据输入字段的表单,这些字段将由用户完成,包括一些元素,用户可以在这些元素中指示他们将输入多少相同的项目。这与 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; };
}