ASP.NET MVC, модель и ViewModel разделение интересов? - PullRequest
1 голос
/ 22 октября 2009

В последнее время я изучал, как лучше организовать уровень представления приложений ASP.NET MVC, когда базовая модель сложна. То, что появилось до сих пор, это архитектура MVVM с их объектами ViewModel. Тем не менее, я не уверен, что являются лучшими практиками, когда такая архитектура на всякий случай.

  • Могут ли объекты ViewModel содержать объекты Model?
  • Если используется MVVM, целесообразно ли использовать объекты модели в представлениях?
  • Где должна быть реализована валидация в классах ViewModel или Model?
  • Должен ли бизнес-уровень (сервисный уровень) знать о ViewModel и кто отвечает за отображение между ViewModel и Model?

1 Ответ

3 голосов
/ 22 октября 2009
  • В большинстве случаев объекты ModelView являются просто контейнерами, содержащими объекты Model, когда нам нужно отправить их несколько типов или когда нам нужно передать пару дополнительных свойств, которые необходимы только в Views.
  • Если работа View заключается в отображении деталей модели, и нечего передавать View, почему бы и нет?
  • Зависит. Вы можете использовать свои классы ModelView и Model только для переноса данных между слоями. И позаботьтесь о проверке с помощью связывателей модели Cutom или с помощью сервисного слоя.
  • Нет причин, по которым они не должны знать о ModelViews. Но обычно вы просто получаете запрошенные Модели из сервисного уровня от контроллера, а затем передаете их / их непосредственно или в ModelView в View.

Кстати, я бы не рассматривал ModelViews как архитектуру. Это больше похоже на «использовать один, когда вам нужен». В конце концов, нет смысла делать это для передачи данных для просмотра:

class SomeModelView {
    public MyModel model { get; set; }
}

Просто передайте MyModel, если этого достаточно для представления, выполняющего свою работу.

...