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.