我正在使用数据注释进行验证,并使用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)" });
但结果是一样的。该字段未验证。
答案 0 :(得分:5)
嗯,我看到的唯一方法是将一个类添加到您想要验证的隐藏输入中。
所以你必须在视图级别这样做。
@Html.HiddenFor(x => x.HiddenSelectedDob, new{@class="validateAlways"})
然后,将validate.js的忽略规则更改为
ignore: ':hidden:not('.validateAlways')'
这意味着:忽略所有隐藏的输入,除非他们有validateAlways
类。