c# – 客户端自定义不显眼验证不起作用
发布时间:2020-12-16 01:55:49 所属栏目:百科 来源:网络整理
导读:使用MVC4,我创建了一个自定义Validation Attribute,它实现了IClientValidatable接口,如下所示: public IEnumerableModelClientValidationRule GetClientValidationRules(ModelMetadata metadata,ControllerContext context) { ModelClientValidationRule ru
使用MVC4,我创建了一个自定义Validation Attribute,它实现了IClientValidatable接口,如下所示:
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata,ControllerContext context) { ModelClientValidationRule rule = new ModelClientValidationRule(); rule.ErrorMessage = ErrorMessages.ClientFieldInputValidation; rule.ValidationType = "regularexpression"; rule.ValidationParameters.Add("pattern",_regEx); yield return rule; } 我还实现了’regularexpression’客户端脚本,如下所示: (function($) { $.validator.addMethod('regularexpression',function(value,element,params) { var regEx = RegExp(params['pattern']); return regEx.test($(element).val()); }); $.validator.unobtrusive.adapters.addBool('regularexpression'); })(jQuery) 我遇到的问题是正则表达式没有在JavaScript的第3行中被选中:var regEx = RegExp(params [‘pattern’]);.因此,客户端验证无法正常工作.服务器端验证工作正常,因为当我点击提交时,它会返回正确的反馈. 注意:我也尝试用正则表达式硬编码代替params [‘pattern’],它运行正常. 任何人都可以帮助我,因为我对JavaScript的了解不是你所谓的强大. 解决方法
尝试更改验证类型,使其与内置的RegEx验证器匹配.生成html时,现有的RegEx逻辑会触发,因此您不需要编写任何javascript.
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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |