我想知道在MVC应用程序中具有使用'必需'的属性的模型属性时发生的触发顺序是什么?数据注释然后也被验证使用JQuery验证器根据用户选择决定是否需要某些东西。在我当前的实现中,当用户与表单交互时,似乎JQuery验证器插件 here接管。
所以场景是我只想在选择某个复选框时才需要日期。我在字段上有一个必需的数据注释,如下所示:
[Required]
public string SomeDate{get;set;}
public bool? IsDateRequired {get;set;}
然后在使用Jquery验证器插件的JS文件中,我有以下
$("#signupForm").validate({
rules: {
someDate: {
required: function() {
return isDateRequired;
},
})};
}
最终结果是仅当isDateRequired为true时才需要SomeDate。这就是我想要发生的事情,我只是不确定它是否正确。
如果我没有DataAttribute'必需'在服务器模型端设置完全相同的JS代码,它永远不会激活验证。这是因为JQuery验证器没有设置" required"输入标签上的属性?
答案 0 :(得分:0)
事实证明,隐藏日期字段的行为导致该字段无法验证,即使字段是“#34; required"基于必需属性。因此,看起来添加到ViewModel的额外规则覆盖了数据注释,实际上它就是jquery.validatior处理隐藏字段的方式。这是有道理的,因为如果你在你看不到的字段上遇到错误,你作为一个用户会非常恼火:)
我想我只是假设这不是为你做的。实际上根本不需要额外的规则。
答案 1 :(得分:-1)
如果您将unobtrusive-validation.js添加到页面并将Data Annotation验证应用于模型类,那么您不需要编写jquery代码来验证表单。