класс Poco модели MVC, структура, имеющая данные или бизнес-уровень?

1

Я новичок в MVC и буду признателен, если вы сможете уточнить мой вопрос.

Что такое модель?

Это просто класс Poco, имеющий поля/свойства, например класс Person?

Или является моделью структуры данных, имеющей в ней данные, например List<Person> или List<Users>?

Или в соответствии с asp.net рабочая модель - это уровень бизнес-уровня или уровня сервиса, может иметь бизнес-правила, логику, проверку и я могу разговаривать с другими слоями?

Спасибо за вашу помощь и направляем меня.

Теги:
asp.net-mvc
asp.net-mvc-4
asp.net-mvc-3

2 ответа

3

Существуют ViewModels и DataModels. Модели Poco считаются DataModels. Модели Poco также могут использоваться как ViewModels, но лучше использовать отдельные модели для просмотров. Поскольку ViewModel может состоять из одной или нескольких моделей Poco.

Здесь вы найдете более подробную информацию: http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applications

Изображение 174551

  • 0
    спасибо, я понял, но будет ли класс модели данных, называемый моделью, или заполненная структура данных этого запроса будет называться моделью? Также где будет бизнес логика? Говорят, чтобы держать контроллер в коже, он должен войти в модель?
  • 1
    Бизнес логика не должна идти в контроллер / действия. Это также не должно входить в модели. Иначе вся концепция SoC (Разделение концерна) сломается. Представьте, что вам может понадобиться одна и та же модель на разных страницах с разными данными, основанными на некоторой логике. Если вы поместите логику в модель, вы не сможете использовать эту конкретную модель где-либо еще. Поместите все свои логические функции в класс обслуживания и заполните данные оттуда. Поток будет выглядеть так: Действие -> Метод вызова службы -> Служба заполняет модель -> Возврат модели к действию -> Действие отправьте модель для просмотра
1

Одно важное замечание "Модель" в "ASP.Net MVC" отличается от "Модели" в классическом шаблоне проектирования MVC, поэтому будьте осторожны при поиске определения/ресурсов. "Модель в классическом MVC", описанная в разделе " Как следует структурировать модель в MVC? ,

"Модель" в ASP.Net MVC - это объект (обычно class), который идеально обеспечивает все данные, необходимые для отображения определенного вида.

Нет никаких ограничений на то, используется ли такой объект для каких-либо других целей. Если вы просматриваете, отображается один конкретный элемент на уровне доступа к данным (например, Person), вы можете легко обмениваться одним и тем же объектом на уровне доступа к данным и использовать его в качестве модели представления.

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

  • 1
    Я бы назвал это определение модели ViewModel . ViewModel - это объект, который содержит именно то, что нужно представлению для отображения всего и ничего более. Модель, однако, является представлением вашего домена. Например, в случае StackOverflow моделью, скорее всего, будут пользователь, вопрос, ответ, комментарий, возражение, тег, значок и т. Д. Они обычно представлены как экземпляры классов, но это скорее способ реализации или представления моделей, а не пример концепции.
  • 0
    @RowanFreeman это действительно «модель представления», но во всем ASP.Net MVC в этом смысле используется термин «модель» (иногда уточняется с помощью «модели представления», но часто нет). Когда классическая буква «M» упоминается в тексте, связанном с MVC ASP.Net, она часто называется «моделью предметной области», чтобы явно отличить ее от «модели» (которая по умолчанию является «моделью представления»).
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню