2011-10-07 160 views
2

我有一个窗体在我的应用程序中使用Ajax模式显示,此窗体使用MVC 3中的内置验证(Microsoft使用jquery.validate)对其进行验证。ASP.NET MVC 3验证和AJAX

但是看起来好像是因为已经使用ajax调用窗体,验证逻辑不再彼此交谈(很像如果您没有使用.live()来处理在文档之后附加到页面上的东西负载)。

我该如何解决这个问题?

编辑

我试图得到这个工作使用:http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/如下面3nigma提供的,但它似乎并没有产生任何影响:/

$.ajax({ 
       url: $(this).attr('href'), 
       success: function (responseHtml) { 
        $('.uiModalContent').html($(responseHtml)); 
        $('.uiModalContent').removeClass('loading'); 
        // Apply validation to form that is inside the modal 
        $('.AjaxForm').removeData('validator'); 
        $.validator.unobtrusive.parseDynamicContent('.AjaxForm input'); 
       }, 

我已经添加了代码给我的成功调用我的ajax显示模式,因为我不能直接把javascript放在被调用的视图中,因为jquery ajax禁止脚本标记。然而,它似乎并没有将验证应用于动态添加的字段...

任何帮助将不胜感激。由于

回答

2

我已经在我的项目做了类似的事情,它“对我的作品” :)

或许你可以尝试的几件事情:

  • $('.uiModalContent').html($(responseHtml));我不认为你需要将responseHtml作为一个jquery对象;事实上,它可能会更好只使用responseHtml如:$('.uiModalContent').html(responseHtml);

  • 尝试改变验证调用:$.validator.unobtrusive.parse($('.uiModalContent'));

我不知道这是否会解决你的问题,但它是值得一试。

+0

他们是没有必要改变第一点为AJAX工作正常!这是对动态添加内容的验证不起作用。 – Cameron

0
$.validator.unobtrusive.parseDynamicContent('.uiModalContent'); 

解决问题:)