IValidatableObject в MVC3 - проверка на стороне клиента

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

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

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

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

3 ответа

Решение

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

Брэд Уилсон:

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

Стюарт Ликс:

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

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.

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

Другие вопросы по тегам