Ну, MSDN спас меня (как это часто бывает).
http://msdn.microsoft.com/en-us/library/ff398048.aspx
Итак, сначала я должен создать адаптер для моего атрибута проверки:
public class CustomAttributeAdapter : DataAnnotationsModelValidator<EmailAttribute>
{
public CustomAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
CustomAttribute attribute) :
base(metadata, context, attribute)
{
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
ModelClientValidationRule rule = new ModelClientValidationRule()
{
ErrorMessage = ErrorMessage,
ValidationType = "custom"
};
return new ModelClientValidationRule[] { rule };
}
}
(Параметр «ValidationType» должен быть строчным, чтобы это работало, поскольку это пост-исправление, которое будет использоваться в качестве атрибута HTML5 - «data-val-custom».)
Тогда все, что мне нужно сделать, это зарегистрировать его в Application_Start.
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(EmailAttribute),
typeof(EmailAttributeAdapter));
С нетерпением жду веселья с проверкой HTML5. :)