Как использовать ненавязчивую проверку JS с настраиваемыми атрибутами проверки в MVC3? - PullRequest
3 голосов
/ 03 марта 2011

У меня есть этот пользовательский атрибут проверки, называемый AsteriskRequiredAttribute, который наследуется от атрибута Required, и его функция состоит только в том, чтобы показывать звездочку (*), когда в поле текстового поля отсутствует значение.

Кажется, что ненавязчивая проверка JS MVC3отлично работать с луком с атрибутом Required, но не с моим пользовательским атрибутом - ничего не происходит.

Что происходит?

1 Ответ

3 голосов
/ 03 марта 2011

http://samipoimala.com/it/2010/11/29/unobtrusive-client-validation-in-asp-net-mvc-3/

Оказывается, реализация пользовательского атрибута - действительно простая задача. Вы реализуете свой собственный класс, который наследует System.ComponentModel.DataAnnotations.ValidationAttribute и реализует System.Web.Mvc.IClientValidatable. Поэтому вам нужно сделать три вещи.

1) Переопределить public bool IsValid (значение объекта) Этот метод будет запущен, когда проверка будет выполнена на сервере (например, если на клиенте не включен JavaScript). Это все, что вам нужно сделать, если вам не нужна проверка клиента.

2) Создайте класс, который наследуется от ModelClientValidationRule. Это обычно очень просто. Вот пример, как включить проверку электронной почты на клиенте:

public class ModelClientValidationEmailRule : ModelClientValidationRule
{
    public ModelClientValidationEmailRule(string errorMessage)
    {
        base.ErrorMessage = errorMessage;
        base.ValidationType = "email";
    }
}

3) Реализация общедоступных IEnumerable GetClientValidationRules (метаданные ModelMetadata, контекст ControllerContext)

Это также обычно очень легко реализовать, вот пример проверки электронной почты:

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
    yield return new ModelClientValidationEmailRule(FormatErrorMessage(metadata.GetDisplayName()));
}

Это все, что вам нужно сделать, чтобы написать собственный атрибут для включения проверки с использованием готовых правил проверки в плагине jQuery Validate.

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