微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在循环中显示数据时触发自定义验证器

如何解决如何在循环中显示数据时触发自定义验证器

我有一个 viewmodel,除其他属性外,还有一个 List<Child Object> 属性。这个子对象有 2 个属性:'ValidValues',它包含一个逗号分隔的有效值字符串。第二个字符串属性称为“EntryValue”,用户在视图中输入该属性。我使用 Razor/HTML Table 使用 for 循环呈现子对象数据。我使用 displayFor 显示了 ValidValues 属性值,而 EntryValue 是使用文本框进行模型绑定的。

我编写了一个自定义验证器,它根据同一行的 ValidValues 属性检查用户在每一行中输入的值。它基本上是一种“包含”类型的验证。这个 Customvalidation 在服务器端工作得很好。但是在客户端它不起作用。这是我的功能

(function ($) {
    $.validator.addMethod("containsinvalidvalues",function (value,element,params) {
    console.log(value);
    console.log(element);
    console.log(params);
    console.log($('#' + params).val()); 

        if (!this.optional(element)) {
            
            //do the contains logic here
        }
        return true;
    });
    $.validator.unobtrusive.adapters.addSingleVal("containsinvalidvalues","validvaluespropname");

}(jQuery));

我遇到的问题是上面console.log中的参数,只是给了我'ValidValues'的viewmodel属性名称,而不是'0,1,2'的属性的实际值,这是有效值列表。我确实得到了 'value' 参数,它是用户在该行输入的值。

是不是因为我所处的循环?我是否应该在这里编写其他代码,因为我处于循环中?我正在获取用户输入的值,但我无法获取该行的 'ValidValues' 属性的值。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。