С MVC3 я должен проектировать свои модели представления так, чтобы одна была привязана к представлению (DisplayModel), а другая была отправлена обратно в контроллер (EditModel)?
Чтобы уточнить, яя не спрашиваю о моделях данных по сравнению с моделями представлений - я знаю, что не стоит связывать мои представления / контроллеры с моделями данных / предметной области.
Также я не спрашиваю о совместном использовании одной модели между двумя отдельными представлениями, одним представлениемкоторый используется для отображения данных, и другое представление, которое используется для редактирования данных.
Скорее, я спрашиваю об одном представлении, которое используется для редактирования данных, и модель, которая связана с представлением противмодель, которая связана с действием контроллера.
Другими словами, если это мой взгляд:
@model MyApp.Models.CustomerModel
Должно ли мое действие контроллера выглядеть так:
public ActionResult Index(CustomerModel model)
Или:
public ActionResult Index(CustomerEditModel model)
В какой-то момент мы делали последнее (отдельно).Но в последнее время мы начали делать первый (общий).
Причиной этого изменения было то, что:
С ненавязчивой проверкой MVC3, если я используюDataAnnotations в моей модели для проверки, это необходимо в обеих моделях, если они разделены (в модели отображения для сопоставления проверки на стороне клиента и в модели редактирования для проверки на стороне сервера).
По мере развития нашего приложения мы поняли, что наши модели отображения и редактирования были идентичны на 95%, за исключением списков выбора, которые были в наших моделях представления.Теперь мы переместили их в общий класс и передаем их через представление.
Но я видел некоторые другие обсуждения, которые указывают на наличиеобщие модели для view / controller - плохая идея, и что нарушает разделение интересов.
Может кто-нибудь помочь мне понять компромиссы для этих двух подходов?