我试图做一个验证器,以确保至少有2个项目被选中。验证器在服务器端正常工作,但客户端代码从未得到执行。ASP.NET MVC 2.0自定义客户端验证
下面是代码:
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));
}
我认为验证器只适用于具有像文本框等值属性的元素
更新1:
EnableClientValidation正确地调用所有必需的JS文件包含在项目中。似乎我需要将onblur附加到上下文中。我会尝试并发布结果。
查看我更新的帖子!调用EnableClientValidation并进行所有引用。 – azamsharp 2010-07-27 19:33:00