У меня есть форма, которая содержит целую кучу полей ввода данных, которые будут заполнены пользователем, включая некоторые элементы, где пользователь может диктовать, сколько из тех же элементов они будут вводить. Это то, что используется в записи Фила Хаака в блоге Привязка модели к списку .
Я успешно использую JQuery для создания дополнительных элементов формы, их правильной индексации и т. Д. Моя проблема - лучший способ фактически прочитать их в моем контроллере. Контроллер в этой статье ожидает только один объект, IList<Product>
, тогда как мой контроллер уже ожидает FormCollection form
, и теперь я пытаюсь также отправить ему IList<Itmes>
.
Должен ли я добавить это к параметрам, ожидаемым Контроллером, или получить доступ через форму ["items"] или что-то еще?
View
<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; };
}