Проверка на стороне клиента asp.net mvc

Я возился с функциями проверки на стороне клиента в ASP. net MVC после прочтения записи в блоге ScottGU по этой теме. Довольно просто использовать атрибуты System.Componentmodel.DataAnnotations, например:

    [Required(ErrorMessage = "You must specify a reason")]
    public string ReasonText { get; set; }

... но что произойдет, если вам понадобится что-то посложнее. Что делать, если у вас есть класс Address с полями PostalCode и CountryCode. Вы можете проверить почтовый индекс по разному регулярному выражению для каждой страны. [0-9] {5} работает для США, но вам нужен другой для Канады.

Я решил эту проблему, развернув собственный класс ValidationService, который принимает свойство ModelState контроллера и соответствующим образом проверяет его. Это отлично работает на стороне сервера, но не работает с новой проверкой на стороне клиента.

В веб-формах я бы использовал элементы управления, генерирующие javascript, такие как RequiredFieldValidator или CompareValidator для простых вещей, а затем использовал CustomValidator для сложных правил. Таким образом, у меня есть вся моя логика проверки в одном месте, и я получаю выгоду от быстрой проверки javascript для простых вещей (90% времени), в то же время я все еще получаю безопасность проверки на стороне сервера в качестве поддержки.

Каким будет эквивалентный подход в MVC?

7
задан John Hoge 9 February 2011 в 22:52
поделиться