2010-06-17 60 views

回答

0

我不認爲這是可能的。但是,可以通過在回發控件上設置OnClientClick來攔截驗證。然後,您可以檢查全局JavaScript變量Page_IsValid的驗證結果。

要記住的一件事是,當頁面上沒有驗證器時,Page_IsValid將是未定義的。

4

您將需要調用javascript函數Page_ClientValidate()來啓動連接到頁面控件的ASP.NET驗證。一旦這個被調用,布爾值將被正確設置。

這是我如何使用它的一個例子。如果ASP.NET驗證成功,我禁用該按鈕,否則該按鈕將保持啓用狀態,並向用戶顯示驗證摘要。 OnClientClick來自ASP:按鈕控件。

OnClientClick="javascript:Page_ClientValidate(); if (Page_IsValid==true) { this.disabled=true; }" 
+1

這似乎是工作,但實際上它打印兩次ValidationSummary的ShowMessageBox :( – markzzz 2011-10-26 13:13:25

0

我開始實施@EverettEvola的解決方案,同時也驗證邏輯被多次調用並顯示多個ValidationSummary彈出窗口。我的解決方案如下:

在按鈕(在我的情況的按鈕是一個提交按鈕)

OnClientClick="return CustomValidationOnClick()" 

而且CustomValidationOnClick()

function CustomValidationOnClick(source, args) { 

    //Manually kickoff page validation 
    //This call will display the Validation summary popup if page is invalid 
    Page_ClientValidate(); 

    //Page_IsValid set by the result of the Page_ClientValidate() call 
    if (Page_IsValid == true) { 
     this.disabled=true; 
     return true; //if Submit button return true to continue form submit 
    } 
    else { 
     //do whatever here 
     return false; //if Submit button return false to cancel form submit 
    } 
}