Подтвердить что ты не робот

Проверка: Модель или ViewModel

Где должна выполняться проверка при использовании ViewModels с MVC (MVVM), на модели или в ViewModel? (Или оба или нет)? И почему? Я расскажу об этом, особенно в свете V2 ASP.NET MVC, который скоро выйдет.

Как насчет сложной/пользовательской проверки?

4b9b3361

Ответ 1

Любая модель, относящаяся к конкретному бизнесу, должна быть в Модели. Любая проверка веб-сайта может быть выполнена как в модели, так и в /ViewModel. Таким образом, ваша бизнес-логика (Модели) может перемещаться за другим интерфейсом (Windows, Web Forms и т.д.), И ваша проверка останется неизменной.

Ответ 2

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

Я некоторое время думал о следующем:

  • Подтверждение ввода пользователя: определенно на контроллере, а не на любой тип модели. Пример: Captcha.
  • Просмотр связанных данных, подтвержденных в ViewModel (не в режиме просмотра, но в режиме просмотра). Примеры: подтверждение пароля, требуемый адрес электронной почты.
  • Валидация бизнес-правил определенно переходит к проверке модели. Примеры: обязательный Email, скидочный купон должен быть действительным.
  • Проверка потенциального использования (история, сценарий и т.д.). Он не проверяет атрибуты, а проверяет правильность всего процесса. Следует перейти к проверке модели (или лучше в отдельном слое). Пример: только 3 предмета могут быть получены бесплатно в течение недели, если никакой заказ не был положить за данный период.

ПРИМЕЧАНИЕ. Я включил Required Email в оба и 2 и 3, поскольку он часто зависит от того, где он принадлежит.
Если электронная почта играет только информативную роль - тогда проверка может быть ослаблена и нажата на модель представления. Если электронная почта является сильным требованием для приложения - это, безусловно, проверка модели.

4-я вещь не имеет никакого отношения к проверке, поскольку мы ее понимаем. Но он также должен применяться. Таким образом, его результат должен отображаться пользователю.

В принципе, все 4 типа проверки могут использовать одну и ту же инфраструктуру. Но реализация зависит:)...

Cheers,
Дмитрий.

Ответ 3

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