Связывание моделей и производные классы моделей - PullRequest
3 голосов
/ 01 июня 2010

Предлагает ли ASP.NET MVC какой-либо простой способ заставить привязку модели работать, когда у вас есть классы моделей, которые наследуются от других?

В моем сценарии у меня есть строгое представление вида List<Person>.

У меня есть пара классов, которые наследуются от Person, а именно PersonTypeOne и PersonTypeTwo.

У меня есть три строго типизированных частичных представления с именами, которые соответствуют именам этих классов (и отображают элементы формы для свойств их соответствующих моделей).

Это означает, что в моем главном представлении у меня может быть следующий код:

<% for(int i = 0; i < Model.Count; i++)
   { 
       Html.RenderPartial(Model[i].GetType().Name, Model[i]);
   } %>

Это работает хорошо, кроме случаев, когда пользователь отправляет форму, соответствующий метод действия контроллера просто получает List<Person>, а не список Person, PersonTypeOne и PersonTypeTwo.

Это в значительной степени ожидаемо, так как отправка формы не содержит достаточно информации, чтобы указать связующему по умолчанию модель для создания любых экземпляров классов PersonTypeOne и PersonTypeTwo.

Итак, есть ли способ получить такую ​​функциональность из связующего устройства модели по умолчанию?

1 Ответ

4 голосов
/ 01 июня 2010

Вы должны просто создать отдельные модели для привязки к вашему входу. Ваши ViewModel и EditModels являются действительно различными обязанностями и поэтому заслуживают своих собственных объектов.

...