Я бы сказал, что это часто необходимо для проверки на всех уровнях:)
Некоторое время я думал о следующем:
- Проверка ввода пользователя: определенно на контроллере, а не на модели любого типа. Пример: Captcha .
- Просмотр связанных данных, проверенных в ViewModel (не во ViewModel, а в ViewModel). Примеры: Подтверждение пароля , Требуется электронная почта .
- Проверка бизнес-правил определенно входит в проверку модели. Примеры: Требуется Email , Купон на скидку должен быть действительным .
- Проверка потенциального варианта использования (история, сценарий и т. Д.). Он не проверяет атрибуты, но проверяет правильность всего процесса. Следует перейти к проверке модели (или лучше в отдельном слое). Пример: Только 3 товара можно получить бесплатно в течение недели, если не было заказа
положить на данный период .
ПРИМЕЧАНИЕ. Я включил Required Email в 2 и 3, так как он часто зависит от того, где он находится.
Если электронная почта играет только информативную роль - тогда валидация может быть ослаблена и передана в модель представления. Если электронная почта является сильным требованием для приложения - это определенно проверка модели.
Четвертая вещь на самом деле не имеет ничего общего с проверкой, как мы ее понимаем.
Но это также должно быть применено. При этом его результат должен отображаться пользователю.
Практически все 4 типа проверки могут использовать одну и ту же инфраструктуру. Но реализация зависит:) ...
Приветствия
Дмитрий.