asp.net MVC验证操作顺序

时间:2015-02-25 14:41:31

标签: jquery-validate data-annotations unobtrusive-validation custom-data-attribute

我想知道在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"输入标签上的属性?

2 个答案:

答案 0 :(得分:0)

事实证明,隐藏日期字段的行为导致该字段无法验证,即使字段是“#34; required"基于必需属性。因此,看起来添加到ViewModel的额外规则覆盖了数据注释,实际上它就是jquery.validatior处理隐藏字段的方式。这是有道理的,因为如果你在你看不到的字段上遇到错误,你作为一个用户会非常恼火:)

我想我只是假设这不是为你做的。实际上根本不需要额外的规则。

答案 1 :(得分:-1)

如果您将unobtrusive-validation.js添加到页面并将Data Annotation验证应用于模型类,那么您不需要编写jquery代码来验证表单。