ASP.NET Разделение проблем в MVC, Model и ViewModel?
-
05-07-2019 - |
Вопрос
В последнее время я изучал, какой наилучший способ организовать уровень представления ASP.NET Приложение MVC, когда базовая модель сложна.То, что появилось до сих пор, - это архитектура MVVM с их объектами ViewModel.Однако я не уверен, каковы наилучшие практики при использовании такого рода архитектуры.
- Могут ли объекты ViewModel содержать объекты модели?
- Если используется MVVM, желательно ли, чтобы объекты модели использовались в представлениях?
- Где должна быть реализована проверка, в ViewModel или классах моделей?
- Должен ли бизнес-уровень (service layer) знать о ViewModel и кто отвечает за сопоставление между ViewModel и Model?
Решение
- В большинстве случаев объекты ModelView - это просто контейнеры, содержащие объекты модели, когда нам нужно отправить несколько их типов или когда нам нужно передать еще пару свойств, которые необходимы только в представлениях.
- Если задача Представления состоит в отображении деталей модели и больше нечего передавать в View, почему бы и нет?
- Зависит от обстоятельств.Вы можете использовать свой ModelView и классы моделей только для переноса данных между слоями.И позаботьтесь о проверке с помощью cutom model binders или с помощью service layer.
- Нет причин, по которым они не должны знать о ModelViews .Но обычно вы просто получаете запрошенные модели с сервисного уровня от контроллера, а затем передаете их напрямую или в ModelView в представление.
Кстати, я бы не рассматривал ModelViews как архитектуру.Это больше похоже на "используй его, когда он тебе понадобится".В конце концов, нет смысла делать это для передачи данных в view :
class SomeModelView {
public MyModel model { get; set; }
}
Просто передайте MyModel
если этого достаточно, чтобы представление выполняло свою работу.
Не связан с StackOverflow