Asp.net mvc 自定义验证器MVC+;验证客户端

Asp.net mvc 自定义验证器MVC+;验证客户端,asp.net-mvc,validation,asp.net-mvc-4,client-side,unobtrusive-validation,Asp.net Mvc,Validation,Asp.net Mvc 4,Client Side,Unobtrusive Validation,我在MVC 4中创建了一个自定义validateur: public class FirstNameValidator : ValidationAttribute { private IRegistrationConfiguration _registrationConfiguration; public string Category { get; set; } public bool IsLocal { get; set; } public FirstName

我在MVC 4中创建了一个自定义validateur:

public class FirstNameValidator : ValidationAttribute
{
    private IRegistrationConfiguration _registrationConfiguration;
    public string Category { get; set; }
    public bool IsLocal { get; set; }
    public FirstNameValidator()
    {
        _registrationConfiguration = DependencyResolver.Current.GetService<IRegistrationConfiguration>();
    }
    public FirstNameValidator(IRegistrationConfiguration registrationConfiguration)
    {
        _registrationConfiguration = registrationConfiguration;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
         if (value == null)
        { 

            return new ValidationResult("Le prénom ne doit pas être vide");
        }
         else
         {
             if(string.IsNullOrEmpty(value.ToString()))
                 return new ValidationResult("Le prénom ne doit pas être vide");
               else if(value.ToString().Length<2)
                 return new ValidationResult("Le prénom doit avoir + que 2 caractères");
             else if (value.ToString().Length > 30)
                 return new ValidationResult("Le prénom doit avoir - que 30 caractères");

         }

         return null;

    }

}
}

如何进行客户端验证

  • 在属性中实现IClientValidable

    公共类FirstNameValidator:ValidationAttribute,IClientValidable

  • 编写javascript适配器并将其包含在视图中

  • 编写javascript验证规则本身并将其包含在视图中

  • 您可以搜索“asp.net mvc 4自定义客户端验证”以了解更多详细信息。 例如,您可以查看或

  • 在属性中实现IClientValidable

    公共类FirstNameValidator:ValidationAttribute,IClientValidable

  • 编写javascript适配器并将其包含在视图中

  • 编写javascript验证规则本身并将其包含在视图中

  • 您可以搜索“asp.net mvc 4自定义客户端验证”以了解更多详细信息。
    例如,您可以查看或

    基于您正在编写的代码,最好使用
    RegularExpressionAttribute
    。您可以使用诸如
    “[a-Za-z]{1,30}$”
    之类的模式来确保您的名字长度在1到30个字符之间。或者,您也可以使用
    RequiredAttribute
    将该字段标记为必填字段

    使用这些验证器的好处是,它们已经连接到JQuery中的客户端验证

    如果必须使用自己的验证器,则实现
    IClientValidatable
    ,并编写自定义JQuery验证适配器

    另外,在我们的项目中,我们推出了自己的验证器,在
    IsValid()
    方法中使用了正则表达式模式匹配器。然后,我们通过
    iclientvalidable
    方法将其连接到JQuery中现有的
    regex
    验证程序适配器。我们这样做是为了控制正在使用的错误消息

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule rule = new ModelClientValidationRule();
        rule.ErrorMessage = ErrorMessages.ClientFieldInputValidation;
        rule.ValidationType = "regex";
        rule.ValidationParameters.Add("pattern", _regEx);
        yield return rule;
    }
    
    public IEnumerable GetClientValidationRules(ModelMetadata元数据,ControllerContext上下文)
    {
    ModelClientValidationRule=新的ModelClientValidationRule();
    rule.ErrorMessage=ErrorMessages.ClientFieldInputValidation;
    rule.ValidationType=“regex”;
    rule.ValidationParameters.Add(“模式”,_regEx);
    收益率-收益率规则;
    }
    
    基于您正在编写的代码,您最好使用
    RegularExpressionAttribute
    。您可以使用诸如
    “[a-Za-z]{1,30}$”
    之类的模式来确保您的名字长度在1到30个字符之间。或者,您也可以使用
    RequiredAttribute
    将该字段标记为必填字段

    使用这些验证器的好处是,它们已经连接到JQuery中的客户端验证

    如果必须使用自己的验证器,则实现
    IClientValidatable
    ,并编写自定义JQuery验证适配器

    另外,在我们的项目中,我们推出了自己的验证器,在
    IsValid()
    方法中使用了正则表达式模式匹配器。然后,我们通过
    iclientvalidable
    方法将其连接到JQuery中现有的
    regex
    验证程序适配器。我们这样做是为了控制正在使用的错误消息

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        ModelClientValidationRule rule = new ModelClientValidationRule();
        rule.ErrorMessage = ErrorMessages.ClientFieldInputValidation;
        rule.ValidationType = "regex";
        rule.ValidationParameters.Add("pattern", _regEx);
        yield return rule;
    }
    
    public IEnumerable GetClientValidationRules(ModelMetadata元数据,ControllerContext上下文)
    {
    ModelClientValidationRule=新的ModelClientValidationRule();
    rule.ErrorMessage=ErrorMessages.ClientFieldInputValidation;
    rule.ValidationType=“regex”;
    rule.ValidationParameters.Add(“模式”,_regEx);
    收益率-收益率规则;
    }