jQuery不显眼的验证忽略了MVC3中的data-val-required消息

时间:2012-06-14 16:26:03

标签: jquery asp.net-mvc-3 data-annotations unobtrusive-validation

我使用了here描述的方法来本地化我的数据注释消息,基本上它在普通表单帖子中工作正常。我也可以在客户端看到本地化的验证消息。

但是,如果我的部分视图具有要验证的输入字段并使用ajax调用加载,则会出现问题。出于某种原因,我得到了默认验证消息(“此字段是必需的”)而不是我在元素的data-val-required属性中设置的本地化消息。

我已经验证了以下内容:
 1.我已经包含了“jquery.validate.min.js”和“jquery.validate.unobtrusive.min.js”。
 2.我检查了ajax响应,它确实包含带有本地化消息的data-val-required属性。

我已经尝试过以下解决方案:
我尝试解析ajax响应(不起作用)为$ .validator.unobtrusive.parse('form')
2.按照here所述解析动态内容以进行验证。仍然没有解决方案。

我有一个迫切的截止日期,这让我很烦恼。

2 个答案:

答案 0 :(得分:3)

我想你已经尝试过了:stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements - 史蒂夫·兰姆的答案对我帮助最大。

基本上,每当您更改页面内容时,您都需要重新初始化验证程序,因为验证代码会在页面加载时构建一个列表来跟踪它只需要验证一次的控件...

我似乎还要添加一些额外的代码来确保输入的命名正确。 给我一点时间,我会挖掘代码。 - 嗯,对不起,该代码是客户端应用程序的一部分,我无法发布。不太确定它无论如何都会有所作为......

答案 1 :(得分:0)

如果有人放弃此问题,正如文档所述,您的字段必须具有name属性:

  

强制要求:所有需要验证的输入元素都需要'name'属性,如果没有这个,插件将无法运行。 “name”属性对于表单也必须是唯一的,因为这是插件跟踪所有输入元素的方式。但是,每组radio或checkbox元素将共享相同的“名称”,因为此分组的值代表表单数据的单个部分。

Source