Я возился с функциями проверки на стороне клиента в 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?