2011-06-07 109 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);