2011-10-14 34 views
5

我有一個與多個驗證摘要設置ShowMessageBox="True"和幾個驗證器的asp.net頁面。我遇到了這樣一種情況,即驗證失敗時,驗證摘要顯示正確,但是通常會觸發頁面回發的下一次單擊不會觸發回發。因此,步驟如下所示:驗證後,爲什麼我的表單不會回發?

  1. 單擊觸發驗證的按鈕。
  2. 驗證失敗並顯示包含失敗消息的消息框。
  3. 單擊一個不確認的按鈕,但應該觸發回發沒有任何反應
  4. 單擊與步驟3相同的按鈕再次發生回覆按預期發生。

什麼可能導致此行爲?

編輯:驗證正在以下列方式完成。在ASP頁:

<asp:Button runat="server" id="btn" onClientClick="return DoValidation();" /> 

在JavaScript:

function DoValidation() { 
    if (!Page_ClientValidate('group1')) 
     return false; 
    if (!Page_ClientValidate('group2')) 
     return false; 

    return true; 
} 
+0

您可能需要發佈一些代碼才能獲得很好的答案。 –

+0

嘗試將第二個按鈕的Causesvalidation屬性設置爲false? – IrishChieftain

+0

我確實嘗試將它設置爲false並得到相同的結果。該頁面相當複雜,我希望有人可能看到類似的情況。 – Mykroft

回答

13

工作就這個問題和作出慎重使用,我終於發現,當你做驗證在編輯中描述的方式來調試程序後這個問題布爾值在失敗時被設置,阻止頁面的下一次回發進行。我相信這是在驗證完成時自動完成的,而不是像我在這裏所做的那樣完成。改變上面描述的JavaScript看起來像這樣:

function DoValidation() { 
    if (!Page_ClientValidate('group1')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 
    if (!Page_ClientValidate('group2')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 

    return true; 
} 

導致問題消失。希望這能幫助下一位犯過同樣錯誤的人。

+0

調試器爲我節省了時間。謝謝! –

+0

我希望我在一個小時前看到您的答案! – clamchoda

相關問題