Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 带有数据注释的客户端自定义验证(MVC)_Jquery_Asp.net Mvc_Data Annotations_Unobtrusive Validation_Validate.js - Fatal编程技术网

Jquery 带有数据注释的客户端自定义验证(MVC)

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 !=

我正在asp.NETMVC中编写自定义验证器属性,它可以很好地用于服务器端验证。这是演示代码

 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;
         }
    }

});