Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

Некоторое время я размышлял о том, чтобы последовать за:

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

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

Четвертая вещь на самом деле не имеет ничего общего с валидацией, как мы ее понимаем.
Но это тоже должно быть применено.Таким образом, его результат должен быть показан пользователю.

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

Ваше здоровье,
Дмитрий.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top