2010-03-21 92 views
3

我的問題如下:ASP.NET MVC 2 Ajax形式的客戶端驗證功能

我正在使用MVC 2.0框架的客戶端驗證功能。

一切都很好,當我在一個簡單的形式使用驗證。

但是,當我使用Ajax窗體,並更新ajax窗體的字段時,客戶端驗證不起作用。

我想,我必須刷新ajax調用後的驗證,但我不知道該怎麼做。

有人可以幫助我嗎?

+0

1.你是什麼意思的 「的MVC 2.0框架的客戶端驗證功能」 嗎? jquery-validate出現在腦海中,但我相信還有其他含義 2.你是什麼意思的「當......我更新ajax表單的字段,客戶端驗證不起作用」?你希望在你從服務器填充它們之後,這些字段是否被驗證? 也許你正在做的一些簡單的例子將有助於... – Felix 2010-03-22 02:15:05

+0

一些代碼示例,你有什麼驗證? – 2010-03-23 03:05:10

回答

0

發生這種情況是因爲window.mvcClientValidationMetadata填充了與jQuery驗證或mvc客戶端驗證函數不同的「範圍」。我已經解決了這個jQuery驗證在ajax.begin表單之前添加了以下行。像這樣:

<div id="result"></div> 

<% Html.EnableClientValidation(); %> 

<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "result" })) 

// here goes the form 
<input type="submit" value="Create" /> 
<% } %> 

this is the required code that needs to be added: 


<script type="text/javascript"> 


function RefreshClientValidationMetadata() { 
    var allFormOptions = window.mvcClientValidationMetadata; 
    if (allFormOptions) { 
     while (allFormOptions.length > 0) { 
      var thisFormOptions = allFormOptions.pop(); 
      __MVC_EnableClientValidation(thisFormOptions); 
     } 
    } 
} 

RefreshClientValidationMetadata(); 

</script> 

當然,函數RefreshClientValidationMetadata()可以添加到任何地方。

希望得到這個幫助!

0

試試這個:

$(document).ajaxComplete(function() { 
    $.validator.unobtrusive.parse(document);    
});