我試圖做一個驗證器,以確保至少有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