IValidatableObject в MVC3 - проверка на стороне клиента - PullRequest
33 голосов
/ 20 января 2011

С MVC3 у вас есть два новых механизма для добавления пользовательской проверки. Это (1) атрибут подкласса ValidationAttribute или (2) реализация IValidatableObject.

ValidationAttribute позволяет относительно просто добавить проверку на стороне клиента путем реализации IClientValidatable (и регистрации нового адаптера и метода через jQuery).

IValidatableObject больше подходит для одноразовых требований проверки, где повторное использование не вариант. Это также приводит к немного более простому коду. Поэтому это был бы мой выбор для ряда сценариев. К сожалению, я не вижу простого способа реализовать проверку на стороне клиента с помощью этого метода.

Итак, вопрос в том, что мне не хватает и как вы получаете JS-проверку при использовании IValidatableObject?

Ответы [ 3 ]

23 голосов
/ 28 января 2011

Поскольку я не получил (действительный) ответ здесь, я спросил пару человек из Microsoft, и они подтвердили, что в настоящее время это невозможно.

Брэд Уилсон:

В настоящее время только средства проверки уровня свойств могут излучать на стороне клиента проверка (так как это гораздо лучше согласуется с идеей ввода проверка в виде браузера ... нет "модели", чтобы говорить из, с точки зрения браузера).

Стюарт Ликс:

Я не верю, что вы можете подключить проверку клиента с IValidatableObject

4 голосов
/ 20 января 2011

http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx http://blogs.msdn.com/b/stuartleeks/archive/2010/07/28/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute-in-asp-net-mvc-3-preview-1.aspx

ASP.NET MVC 3 теперь учитывает интерфейс IValidateObject при связывании модели (в дополнение ко всем другим подходам проверки, уже поддерживаемым с MVC 2), иизвлекает из него ошибки проверки и автоматически отмечает / выделяет затронутые поля в представлении с помощью встроенных помощников HTML-форм.

ASP.NET MVC 3 также представляет новый интерфейс IClientValidatable, который позволяет ASP.NET MVC обнаруживатьво время выполнения, имеет ли валидатор поддержку проверки клиента.Этот интерфейс был разработан таким образом, чтобы его можно было интегрировать с различными средами валидации.MVC 3 также представляет новый интерфейс IMetadataAware, который упрощает ваш вклад в процесс создания ModelMetadata.

0 голосов
/ 21 января 2011

Эта статья описывает способ доступа к объекту контейнера при проверке на стороне клиента в ASP.NET MVC.Вы можете, вероятно, использовать это, чтобы начать использовать собственную клиентскую проверку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...