2011-12-11 48 views
0

我有一個使用UpdatePanel和驗證的網頁。自定義Page_ClientValidate在使用updatepanel時被覆蓋

由於內規定要求的,我一定要顯示某個自定義模型驗證失敗時,到目前爲止,我只能夠通過重寫Page_ClientValidate客戶端功能,要做到這一點:

function Page_ClientValidate(validationGroup) { 
    Page_InvalidControlToBeFocused = null; 
    if (typeof(Page_Validators) == "undefined") { 
     return true; 
    } 
    var i; 
    for (i = 0; i < Page_Validators.length; i++) { 
     ValidatorValidate(Page_Validators[i], validationGroup, null); 
    } 
    ValidatorUpdateIsValid(); 
    ValidationSummaryOnSubmit(validationGroup); 
    Page_BlockSubmit = !Page_IsValid; 
    if(!Page_IsValid) 
    { 
     displayError(); 
    } 
    return Page_IsValid; 
} 

該作品很好,但我注意到,當在UpdatePanel中使用它時,只要UpdatePanel生成新內容,似乎包含原始Page_ClientValidate的ScriptResource.axd再次被下載,因此覆蓋了我的覆蓋(如果這是有道理的)。

現在,它顯示字段旁邊的錯誤,但不會調用我的displayError函數。

有什麼建議嗎?

我想過可能會寫一些東西來監視錯誤範圍,看看它們是否可見,但不知道此時是否過度殺傷。

感謝

加文

回答

1

是否使用$(文件)。就緒(...)? 如果是這樣,請嘗試使用客戶端的pageLoad() http://encosia.com/document-ready-and-pageload-are-not-the-same/

+0

既不。上面的Page_ClientValidate只是在我的JavaScript文件中加載了所有其他資源。其中有一個$(function(){});但這與驗證無關,因爲它與jQuery無關。謝謝;) – Gavin

+0

是的,但如果你想要一些js運行時,UpdatePanel回發那麼你需要把它放在JS pageLoad(),否則它將只運行一次 –

+0

這將意味着我將不得不做的窗口['' Page_ClientValidate'] = function(validationGroup){///};重寫覆蓋,再次大聲笑。這是一個可能的解決方案?我會試一試。 – Gavin