Шаблоны моделей ASP.NET MVC: что работает лучше всего? - PullRequest
1 голос
/ 04 ноября 2010

Я сделал несколько проектов в ASP.NET MVC, и есть тема, которую я нигде не видел. Я хотел узнать мнение других людей по этому поводу.

Каковы некоторые рекомендации по проектированию моделей? В прошлом я использовал два подхода: должны ли модели представлять разные сущности, или у вас должны быть модели, специфичные для домена (для конкретного домена? Для конкретного вида?)? Различие состоит в том, что модели, представляющие отдельные сущности, используются в более чем одном представлении, где модели, специфичные для предметной области, связаны с конкретными представлениями.

Обратите внимание на следующее: в моем приложении есть сущность User. Должен ли я иметь одну UserModel, которую я использую в представлении «Регистр», представлении «Показать», представлении «Индекс» и т. Д., Или было бы предпочтительным иметь RegisterUserModel, ShowUserModel, ListUserModel и т. Д .?

Я использовал оба шаблона раньше. Преимущество моделей, специфичных для предметной области, заключается в том, что любая логика проверки, применяемая с помощью атрибутов, может отличаться в представлениях. Обратной стороной является то, что вы нарушаете DRY, и ваши модели становятся довольно волосатыми, даже если вы разделяете их на пространства имен. И наоборот, использование единого шаблона модель-сущность приводит к чрезмерно общим данным проверки (обычно в отношении сообщений об ошибках), но у вас есть хороший, плотный уровень модели, и преобразование между моделями и объектами намного проще (меньше кода).

Какой подход предпочитает ТАК? Или есть подход, который я даже не рассматриваю?

Ответы [ 3 ]

4 голосов
/ 04 ноября 2010

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

Пример для ViewModel

Шаблон ViewModel

2 голосов
/ 04 ноября 2010

Когда я думаю о моделях предметной области, я думаю и о бизнес-логике.Я пытаюсь сохранить M в MVC для ссылки на модели, которые помогают в аспекте представления приложения, а не на объекты (доменные объекты), которые представляют мои реальные объекты.

1 голос
/ 05 ноября 2010

Модель и вид должны быть парой. Создание огромных классов моделей и огромных представлений не очень хорошая идея. На мой взгляд, в вашей модели представления вы должны представлять только необходимую часть вашей бизнес-логики. Например. Когда вы создаете регистрационную форму, сделайте вашу модель и представление настолько простыми, насколько это возможно - создайте RegisterUserModel.cs и RegisterUserView.aspx. Не передавайте туда весь объект User. Сделайте это светом, не нарушайте принцип единой ответственности.

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