Проверка данных ASP.NET MVC 2: переносится ли это из DomainModel в ViewModel? - PullRequest
2 голосов
/ 30 августа 2010

Учитывая мое понимание MVC и DDD (критический анализ по необходимости):

  • Доменные модели могут создаваться фабриками и сохраняться в хранилищах. Это объекты POCO.
  • Модели представлений содержат частичные или полные доменные модели, необходимые для представления. Они генерируются службой, которая взаимодействует с хранилищем. Таким образом, доменные модели никогда не попадают в поле зрения напрямую. Аналогично, ViewModels никогда не сохраняются.
  • Скорее всего, у вас будет несколько моделей представлений для одной и той же доменной модели, поскольку вы можете показать ее в нескольких представлениях.

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

Итак, как вы получаете ViewModels для наследования проверки данных модели предметной области?

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

1 Ответ

2 голосов
/ 30 августа 2010

Я задавал этот же вопрос на саммите моделей и практик в октябре прошлого года, когда говорил с Брэдом Уилсоном , и у него не было глобального решения.

Одна идея, которую я обсуждал с ним, заключалась в расширении библиотеки отображения объектов, такой как AutoMapper , чтобы также отобразить валидацию из модели предметной области в модель представления.

При проектировании структуры, облегчающей этот сценарий, необходимо учесть несколько моментов:

  1. Правила проверки могут зависеть от контекста и, следовательно, могут быть уникальными для конкретной модели представления. Блок проверки библиотеки предприятия позволяет настроить логику проверки с использованием файла конфигурации - например, его можно расширить и перенести на просмотр моделей.

  2. Модель представления может иметь свойства, которые не являются частью модели домена, например свойство, которое указывает, что установлен определенный флажок «согласиться с условиями». Это свойство требует проверки, однако оно зависит от вида и варианта использования, а не от модели предметной области. Этот сценарий служит еще одним аргументом для разделения логики проверки, по крайней мере, частично.

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

...