2012-09-13 207 views
0

我有已啓用的AutoPostBack一個「服務器列表」和SelectedIndexChanged事件連接到一個ListBox:執行最後一個動作時後退按鈕按下ASP.Net

protected void lbServerList_SelectedIndexChanged(object sender, EventArgs e) 
    {    
     if (lbServerList.SelectedValue.ToString() != "") 
     { 
      Response.Redirect("detail.aspx?Server=" + lbServerList.SelectedValue.ToString()); 
     } 
    } 

然後,我有一個文本框添加「服務器」與按鈕「btnServertoAdd」(執行加法)

protected void btnServertoAdd_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("add.aspx?Server=" + tbServertoAdd.Text); 
    } 

方案:如果我從列表框中選擇一個項目就會去detail.aspx表示服務器規格:真棒。 現在,如果我點擊返回(瀏覽器按鈕),然後在文本框中鍵入一些內容,然後單擊btnServerToAdd它仍然會去detail.aspx,而不是add.aspx,因爲它應該... 我該如何解決這個問題?

讓我知道是否需要更多的代碼。

回答

0

發生這種情況的原因是,當您單擊該按鈕時,所選服務器也與原始值(存儲在視圖狀態中)不同。這兩個事件都被解僱,但顯然SelectedIndexChanged事件首先被解僱,Redirect跳過了其餘的處理。

我想不出如何使SelectedIndexChanged事件周圍觸發第二次,所以不是你可以做的是,而不是Redirect荷蘭國際集團在事件本身:

  1. 有一個在您的頁面類中配對bool成員變量。
  2. 在每個事件處理程序中設置一個爲true
  3. OnLoadComplete頁面事件,檢查每個並在必要時重定向:
    • 如果兩個true,重定向到add.aspx
    • 如果其中一個是true,則重定向到相應的頁面。
    • 否則根本不要重定向。
+0

但事件在加載後處理。 – Paparazzi

+0

PreRender然後。你明白了。 – Rawling

+0

非常感謝回覆,也許我不太瞭解c#。我添加了bool成員變量,但是每次加載頁面時,它們都被重置。我使用了ViewState,但我必須執行兩次頁面操作才能到達我想要的位置。 – Iv4n