Должны ли ViewModels использоваться в каждом представлении, использующем MVC? - PullRequest
4 голосов
/ 09 сентября 2011

Как я понимаю, вы используете ViewModel для хранения данных, отличных от других моделей и источников, которые будут использоваться в представлении, поскольку модель не всегда будет содержать то, что вы хотите.

Я пытаюсь выяснить,уместно использовать ViewModel для каждого View.Причина, по которой я спрашиваю, заключается в соображениях согласованности.Вы можете иметь представление, для которого нужна только сама модель, и другое представление, для которого требуется модель представления.Хорошо ли смешивать их между всеми вашими взглядами?Или в каждом представлении должна быть ViewModel?

Это важно знать, поскольку мои модели напрямую связаны с базой данных, поскольку я использую код Entity Framework 4.1 в первую очередь.

Ответы [ 2 ]

13 голосов
/ 09 сентября 2011

Это не требование, но это лучшая практика.

Вы хотите максимально отделить базу данных от своей презентации, и наличие ViewModel (даже если оно идентично) дает вам это разделение,Он также поддерживает согласованность, поэтому у вас нет некоторых представлений о моделях, а некоторых нет.Этот тип дизайна заставляет вас думать обо всех данных, к которым ваши представления должны быть привязаны, и выяснять возможности оптимизации, видеть, может ли происходить дублирование данных, хранить данные в одном месте и т. Д.

Подумайте о своемViewModel как контракт с View .... для этого View требуется X.

Немного больше работы, но в конечном итоге это окупится.

7 голосов
/ 09 сентября 2011

Лично мне нравится абстрагироваться от того, что отправляется в мои взгляды от моих моделей.

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

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

Стоит также помнить, что ваши представления не зависят от ваших контроллеров и моделей. Вы можете обнаружить, что, используя модель представления, вы можете повторно использовать свое представление в методах контроллера проще, чем когда представление привязано к самой модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...