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

问题描述

我有一个 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 (将#修改为@)