Jquery 带有数据注释的客户端自定义验证(MVC)
我正在asp.NETMVC中编写自定义验证器属性,它可以很好地用于服务器端验证。这是演示代码Jquery 带有数据注释的客户端自定义验证(MVC),jquery,asp.net-mvc,data-annotations,unobtrusive-validation,validate.js,Jquery,Asp.net Mvc,Data Annotations,Unobtrusive Validation,Validate.js,我正在asp.NETMVC中编写自定义验证器属性,它可以很好地用于服务器端验证。这是演示代码 public class CustomEmailValidator : ValidationAttribute,IClientValidatable { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value !=
public class CustomEmailValidator : ValidationAttribute,IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
string email = value.ToString();
if (Regex.IsMatch(email, @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", RegexOptions.IgnoreCase))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(ErrorMessage);//"Please Enter a Valid Email.");
}
}
else
{
return new ValidationResult("" + validationContext.DisplayName + " is required");
}
}
//new method
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule();
rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());
rule.ValidationType = "emailvalidate";
yield return rule;
}
}
我不能熟练地添加适配器,所以我确信在obstrusive.js中添加适配器是有问题的。请指出这个问题。谢谢。在
$.validator.unobtrusive.adapters.add
方法中,您需要向验证器添加规则。但您似乎只是在验证一个正则表达式,在这种情况下,您应该创建一个扩展RegularExpressionAttribute
(并注册)的ValidationAttribute,以便自动处理所有脚本。验证正则表达式只是一个演示。我需要向验证器添加规则。你能分享一些有用的材料吗?这取决于-什么是真正的代码,你实际上在验证什么?例如,我需要添加验证正则表达式的规则(不扩展RegularExpressionAttribute)。然后我建议你阅读
$.validator.unobtrusive.adapters.add("emailvalidate", function (options) {
options.messages['emailvalidate'] = options.message;
});
$.validator.addMethod("emailvalidate", function (value, element) {
{
console.log("inside emailValidate function");
if (value=="test") {
return true;
}
else {
return false;
}
}
});