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

asp.net-mvc-4 – MVC4自定义不显眼的验证器无法正常工作

发布时间:2020-12-16 07:24:29 所属栏目:asp.Net 来源:网络整理
导读:不确定是什么问题.语法似乎正确….但它仍然不会在客户端激发.如果我提交表单,我会得到服务器端验证,客户端没有… 这是页面上的代码: script src="@Url.Content("~/Scripts/jquery.validate.min.js")"/scriptscript src="@Url.Content("~/Scripts/jquery.val
不确定是什么问题.语法似乎正确….但它仍然不会在客户端激发.如果我提交表单,我会得到服务器端验证,客户端没有…

这是页面上的代码:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
<script type="text/javascript">
    // we add a custom jquery validation method
    (function ($) {
        $.validator.addMethod('additive',function (value,element,params) {
        //just return false to test it.
        return false;
    });
    // and an unobtrusive adapter
    $.validator.unobtrusive.adapters.add("additive",["field2","field3","field4"],function (options) {
        var params = {
            field2: options.params.field2,field3: options.params.field3,field4: options.params.field4
        };
        options.rules['additive'] = params;
        if (options.message) {
            options.messages['additive'] = options.message;
        }
    });
}) (jQuery);
</script>

以下是与客户端相关的验证器部分(IClientValidatable):

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata,ControllerContext context)
        {
            ModelClientValidationRule rule = new ModelClientValidationRule
            {
                ValidationType = "additive",ErrorMessage = "ERROR MESSAGE"
            };

            rule.ValidationParameters.Add("field2",propName2);
            rule.ValidationParameters.Add("field3",propName3);
            rule.ValidationParameters.Add("field4",propName4);

            yield return rule;
        }

该模型的装饰如下:

[SumValidation("OtherField2...")]
public int MyField { get; set; }

当字段呈现时,它就是所有存在的,来自服务器端的所有内容都是data-xxx属性.只是这个特定的客户端验证不会触发.有人看到我错过了吗?

解决方法

弄清楚了.如果有人碰到这个.在页面上添加了自定义验证.在我将自定义验证javascript移动到_Layout.cshtml的head部分后,它开始工作.

因此,如果您的脚本看起来正确,那么检查的好地方.

另一种解决方法是运行$.validator.unobtrusive.parse(‘form’);它会重新加载所有验证器.

(编辑:李大同)

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

    推荐文章
      热点阅读