Asp.net-MVC中特定隐藏字段的客户端验证

时间:2016-07-13 13:32:15

标签: javascript jquery asp.net-mvc

我正在使用数据注释进行验证,并使用unobtrusive.js进行客户端验证。

我默认根据jquery.validate.js的默认设置(忽略:":hidden"),有几个未经验证(我不需要)的隐藏字段。 / p>

在我的情况下,我只想验证一个特定的隐藏字段而不是全部,因此我无法覆盖

                   ***ignore: ":hidden"*** to  ***ignore:[]***.

如果更改了,则会考虑所有隐藏字段进行验证,这不是我的要求。

不知道如何为特定的隐藏字段启用验证。

 [ValidDate(ErrorMessage = "This is not a valid date.Please enter date in dd/mm/yyyy format.")]
 public string HiddenSelectedDob { get; set; }

ValidDate是自定义属性。

在这里,我从三个不同的下拉列表中获取用户对日,月和年的输入,并且对于每个下拉列表的更改事件,将使用jQuery设置HiddenSelectedDob的值。

最后提交这个隐藏的文件应该是有效的。

我给那个隐藏的档案提供了一个班级名称,如..

@Html.HiddenFor(m => m.HiddenSelectedDob, new { @class = "validateAlways" })

并覆盖jquery.validate.js的默认设置,如

$.validator.setDefaults({ ignore: ":hidden:not(.validateAlways)" });

但结果是一样的。该字段未验证。

1 个答案:

答案 0 :(得分:5)

嗯,我看到的唯一方法是将一个类添加到您想要验证的隐藏输入中。

所以你必须在视图级别这样做。

@Html.HiddenFor(x => x.HiddenSelectedDob, new{@class="validateAlways"})

然后,将validate.js的忽略规则更改为

ignore: ':hidden:not('.validateAlways')'

这意味着:忽略所有隐藏的输入,除非他们有validateAlways类。