Использование ViewModel в ASP.NET MVC с FluentValidation - PullRequest
9 голосов
/ 10 июня 2010

Я использую ASP.NET MVC с классами POCO Entity Framework и каркасом FluentValidation.Это работает хорошо, и проверка происходит как надо (как если бы я использовал DataAnnotations).Я даже получил проверку на стороне клиента.И я очень доволен этим.

Поскольку это тестовое приложение, которое я пишу, просто для того, чтобы узнать, смогу ли я совместить новые технологии (и изучить их по ходу дела), я теперь готов экспериментироватьс использованием ViewModels вместо простой передачи фактической модели в представление.Я планирую использовать что-то вроде AutoMapper в своем сервисе, чтобы выполнить сопоставление от модели к ViewModel, но сначала у меня вопрос.

Как это повлияет на мою проверку?Должны ли мои классы проверки (написанные с использованием FluentValidation) быть написаны для ViewModel вместо Model?Или это должно происходить в обоих местах?Одно из главных преимуществ DataAnnotations (и FluentValidation) заключалось в том, что вы можете проводить валидацию в одном месте, которое будет работать «везде».И оно выполняет это обещание (в основном), но если я начну использовать ViewModels, не потеряю ли я эту способность и вернусь ли я к тому, чтобы поставить проверку в двух местах?

Или я просто ошибаюсь?

1 Ответ

4 голосов
/ 11 июня 2010

Или я просто ошибаюсь?

Возможно;)

Если вы добавите весь код проверки в свои модели ViewModels, вы просто будете проверять их вместо ваших реальных моделей. Все, что вы действительно изменяете, это то, какие объекты могут войти в недопустимое состояние.

Прямо сейчас я рад, что я проверяю только ViewModels и затем передаю эту информацию реальным моделям и слоям DAO. Будь или не ваш домен может ввести недопустимое состояние является спорный вопрос, хотя, но до сих пор этот метод работает отлично подходит для меня. Проверка в одном месте, и в моем хранилище нет недопустимых объектов.

...