У меня есть приложение ASP.Net MVC с моделью, состоящей из нескольких уровней и содержащей коллекцию.
Я считаю, что представление для создания объектов настроено правильно, но оно просто не заполняет коллекцию в модели, когда я отправляю форму на сервер.
У меня есть часть данных, которая находится в иерархии классов таким образом:
person.PersonDetails.ContactInformation[0].Data;
Эта структура класса создана LinqToSQL, а ContactInformation имеет тип EntitySet<ContactData>
. Для создания представления я передаю следующее:
return View(person);
и в представлении у меня есть форма, которая содержит одно текстовое поле с именем, связанным с вышеупомянутым полем:
<%= Html.TextBox("person.PersonDetails.ContactInformation[0].Data")%>
Метод post в моем контроллере будет следующим:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create (Person person)
{
//Do stuff to validate and add to the database
}
Именно в этот момент я теряюсь как person.PersonDetails.ContactInformation.Count () == 0. Таким образом, ModelBinder создал объект ContactInformation, но не заполнил его объектом, который он должен содержать (т.е. ContactData) с индексом 0.
У меня вопрос в два раза:
1. Я выбрал правильный подход ... то есть должна ли это работать?
2. Есть ли какие-либо идеи относительно того, почему не удается заполнить объект ContactInformation?
Большое спасибо,
Ричард