2011-10-26 61 views
0

我有以下服務器端的onclick方法:服務器端的onclick但防止回發在某些情況下

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    if (txtSearch.Text == "" || txtSearch.Text.Length < 4) { 
     //NO POSTBACK HERE 
    } else { 
     Response.Redirect(www.google.be); 
    } 
} 

這裏那麼什麼建議嗎?我不能以客戶端的方式做到這一點,因爲我需要在url中提供服務器端參數。

感謝您的幫助

回答

1

你不能避免回發,一旦你已經執行了服務器端的Click事件。

選擇:

  • 使用一個客戶端功能檢查和驗證,只在某些情況下調用服務器端點擊或返回false,以避免它。
  • 使用UpdatePanel方法啓用部分呈現並最小化回發的影響。仍然會有回傳和整個頁面生命週期,但頁面閃爍最小。

在你的情況我認爲你可以簡單地做所有的客戶端,你提供的代碼很容易在JQuery中編寫。

+0

但是就像我說的,我需要一個服務器端的變量,我需要把URL作爲參數內給它。我不能同時做一個客戶端和服務器端onclick。因爲如果我設置返回false;到客戶端onclick然後我的服務器端onclick既不工作也不工作 – Ozkan

+0

但在你的情況下,當txtSearch.Text爲null或短時,你將返回false並避免回發;只有在另一種情況下,您將調用服務器端單擊。無論如何,你甚至可以禁用btnSearch按鈕,當文本框沒有正確驗證。 –

+0

好的,謝謝,我會嘗試 – Ozkan

2

爲什麼不做客戶端?

<asp:Button ID="btnSearch" OnClientClick="return validateForm();" OnClick="btnSearch_Click" Text="Send" /> 

,並有一個JavaScript方法:

function validateForm(){ 
    if(document.getElementById('<%= txtSearch.ClientID %>').value == '') 
     return false; 
    else 
     return true; 
} 
相關問題