Я пытаюсь создать валидатор, который будет гарантировать, что выбраны как минимум 2 элемента. Валидатор работает правильно на стороне сервера, но клиентский код никогда не выполняется.
Вот код:
Sys.Mvc.ValidatorRegistry.validators["country"] = function (rule) {
var min = rule.ValidationParameters["min"];
return function (value, context) {
if (value >= min) return true;
return rule.ErrorMessage;
};
};
А вот код валидатора:
public class CountryValidator : DataAnnotationsModelValidator<CustomValidations.CountryAttribute>
{
private int _minimum;
private string _message;
public CountryValidator(ModelMetadata metadata, ControllerContext context, CustomValidations.CountryAttribute attribute) : base(metadata,context,attribute)
{
_minimum = attribute.Minimum;
_message = attribute.ErrorMessage;
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
var rule = new ModelClientValidationRule()
{
ErrorMessage = _message,
ValidationType = "country"
};
rule.ValidationParameters.Add("min", _minimum);
return new[] { rule };
}
}
Я даже зарегистрировал адаптер проверки в файле global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(AgeAttribute), typeof(AgeValidator));
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(CountryAttribute),typeof(CountryValidator));
}
Я думаю, что валидатор работает только с элементами, имеющими свойство value, такими как текстовые поля и т.д.
ОБНОВЛЕНИЕ 1:
EnableClientValidation вызывается правильно, и все необходимые файлы JS включены в проект. Кажется, мне нужно прикрепить onblur к контексту. Я попробую это и опубликую результаты.