Asp.net mvc 自定义验证器MVC+;验证客户端
我在MVC 4中创建了一个自定义validateur: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
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;
}
}
}
如何进行客户端验证
例如,您可以查看或基于您正在编写的代码,最好使用
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);
收益率-收益率规则;
}