加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读