Лучшие практики с ASP.NET MVC моделей представления - PullRequest
5 голосов
/ 07 сентября 2010

Я спрашиваю себя, как правильно создать модель представления.

Например, у меня есть представление редактирования с некоторыми текстовыми полями и выпадающим списком.

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

Или, вообще говоря, я должен отделить специальные поля ввода в отдельных моделях представления?

Когда представление должно иметь более одной модели представления, а когда нет?

Ответы [ 4 ]

6 голосов
/ 07 сентября 2010

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

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

Например, у меня есть вид редактирования с некоторые текстовые поля и выпадающий список.

Должен ли я отделить выпадающий список в новую модель зрения или шоуд редактировать вид есть одна модель с список для выпадающего списка?

Я бы сказал нет, если эти поля как-то функционально связаны.

Вывод: вам нужно будет найти правильный баланс между наличием модели представления для каждого поля на экране и наличием единой модели представления для приложения.

1 голос
/ 09 сентября 2010

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

0 голосов
/ 07 сентября 2010

Как правило, вы хотите использовать шаблон ViewModel, если хотите сохранить данные, используемые типизированным представлением. Для специфичной для пользовательского интерфейса логики и деталей, шаблон ViewHelper будет более подходящим.

Некоторые обсуждения ViewModel см. В этой статье. http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/

0 голосов
/ 07 сентября 2010

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

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