2011-10-07 162 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'); 

解決問題:)