2011-12-30 42 views
1

我通過jquery ajax將表單加載到頁面上。一旦加載,我希望<%Html.EnableClientValidation(); %>將正常工作。事實並非如此,我猜測這是因爲表單在初始設置後已經添加到DOM中,並且客戶端驗證腳本沒有連接到處理「實時」內容。.NET MVC 2客戶端驗證和Ajax加載表格

這個假設是否正確?有沒有解決辦法?

我使用的主要有以下幾個腳本來處理客戶端驗證....

<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script> 
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script> 

請注意,我用我 ...

<script src="../../Scripts/jquery.validate.js" type="text/javascript"></script> 

雖然列入這個腳本似乎沒有區別。

另請注意,我將<%Html.EnableClientValidation(); %>放置在我的表單上方,因此該指令通過ajax調用與表單一起加載。

+0

有一件有用的事情是,我改變了加載的形式以使用<%using(Html.BeginForm(...)}%>,而不是僅僅手動輸入

標籤。這個網站http://blogs.teamb.com/craigstuntz/2010/09/09/38636/這樣做的目的是讓表單的元素具有插入的適當的類,但是,應該插入的腳本下面的'close form tag'仍然缺失 – mikerennick 2011-12-30 15:26:25

回答

1

這個假設是否正確?

是的,這個假設是正確的。

是否有解決方法?

是的,有。您可以查看following blog post,它說明了如何繼續強制動態加載內容的客戶端驗證。

+0

我通過博客文章閱讀,除非我錯過了一些東西,解決方案的關鍵是檢查表單的提交操作的驗證錯誤,這行代碼。 ..if(!Sys.Mvc.FormContext.getValidationForForm(this).validate('submit')。length){...}這樣做可以防止提交表單時出現錯誤,但不會像用戶那樣突出顯示錯誤在字段之間移動,並且不會向t指示他用戶在表單中的錯誤所在。我錯過了什麼?另外,請參閱上面的我的評論...爲什麼驗證腳本不會加載到表單下方? – mikerennick 2011-12-30 15:39:54