2011-06-07 67 views
5

我请求ASP.net MVC视图到现场框和视图中包含已标记了属性的表单字段由JQuery的不显眼的验证插件使用后手动绑定jQuery验证。Ajax请求

客户端脚本不工作然而,我的理论是,因为它的验证框架只被上早已由MVC视图已经被加载到现场箱的时间通过网页加载触发。

因此我怎样才能让验证框架知道它有新的表单字段来解决呢?

干杯,伊恩。

回答

6

你可以看看的following blog post。这里是another one

+0

Thankas Darin。关于第一个链接,'getFunction'是什么/哪里?我无法在验证文件或jQuery源中找到它。 – 2011-06-08 11:05:42

+0

链接二号导致我得到它的工作。不幸的是,验证摘要没有出现在客户端。另一个问题... – 2011-06-08 14:42:48

1

另一种选择,而招,这为我工作。就在正由Ajax调用

this.ViewContext.FormContext = new FormContext(); 

Reference

0

我也有类似的问题,返回的局部视图的开头添加以下行。我有一个表单使用Ajax请求,用不同的表单域重新显示表单的一部分。我使用不显眼的验证,通过手动在客户端使用

@Html.TextBoxFor 

为我的文本框。出于某种原因,试图用无效的字段(即提交时验证工作,该文本框获得红色外框和相应的错误消息与我放在

data_val_required 

属性,例如内容显示。

但是,当我点击一个按钮,使Ajax请求修改与不同字段的表单,然后再次提交,只显示无效字段上的红色轮廓,但没有错误消息显示。对我来说,但我仍然看不到是什么导致了这个问题在客户端验证是在那里,我只是不明白为什么错误消息属性值不会显示。

我能想到的一点是,jQuery验证代码在提交完成后没有再次尝试检查表单字段。

16
var $form = $("form"); 

$form.unbind(); 
$form.data("validator", null); 

$.validator.unobtrusive.parse(document); 
// Re add validation with changes 
$form.validate($form.data("unobtrusiveValidation").options); 
+1

完美!谢谢。 – Arvind 2013-10-02 10:14:41

1

出于某种原因,我不得不bjan和dfortun的回答结合起来......

所以我把这个在我看来:

@{ 
    this.ViewContext.FormContext = new FormContext(); 
} 

而Ajax调用完成后这个执行此:

var form = $("#EnrollmentForm"); 
form.unbind(); 
form.data("validator", null); 
$.validator.unobtrusive.parse(document); 
form.validate(form.data("unobtrusiveValidation").options);