asp.net中Button按鈕點擊兩次才執行Onclick事件的緣由

      今天寫了一個簡單的聊天室,有登陸頁面和聊天室,當從登陸頁面跳入到聊天室事後,卻發現要點擊兩次發送按鈕才能發送到顯示區,而後發送按鈕正常運行。web

      經過不斷測試,發現,第一次點擊並無執行點擊事件,第二次才執行的點擊事件。而且也找到了問題所在。下面用一個簡單的小例子來講明:瀏覽器

     頁面Server_Transfer.aspx:測試

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />         //就只有一個button按鈕,用來跳轉到BtnOnclick.aspx頁面spa

Server_Transfer.aspx.csorm

    protected void Button1_Click(object sender, EventArgs e)
    {
      Server.Transfer("BtnOnclick.aspx");
    }
server

  BtnOnclick.aspx頁面事件

點擊提交按鈕把下面的文本框的內容顯示到上面的文本框中it

最後的結果是:當我從Server_Transfer.aspx頁面跳到 BtnOnclick.aspx頁面中,在下面的文本框中輸入值,點擊提交,頁面會刷新,但上面的文本框並不會顯示我輸入的值,而後再次輸入值,點擊提交按鈕,頁面刷新,上面文本框會顯示我輸入的值。登錄

若是我把cli

Server_Transfer.aspx.cs

    protected void Button1_Click(object sender, EventArgs e)
    {
      Server.Transfer("BtnOnclick.aspx");
    }

中的Server.Transfer("BtnOnclick.aspx");改成:Response.Redirect("BtnOnclick.aspx");那麼久不會出現上述狀況了,進入頁面點擊就能夠執行。

如今來了解server.Transfer 與Response.Redirect的區別

Response.Redirect:瀏覽ASP文件->->遇到response.redirect->response.redirect後面的地址機端的瀏覽->瀏覽行新的地址。
server.Transfer:瀏覽ASP文件->->遇到Server.Transfer->向新的文件。

同過上面可知,當咱們經過server進行頁面跳轉到新頁面的時候,瀏覽器並不知道是這是個新的頁面,從沒有變的地址欄就能夠看出。OnClick事件是把須要的數據提交到它對應的頁面,當點擊提交按鈕的時候,它發現這不是他須要提交到的頁面(實際上是,只不過瀏覽器不認識---地址與本來的地址不對)他會跳轉到他須要操做的頁面,並不執行Onclick事件,這個時候地址欄就會跳轉到他原本的地址,而不是上一個頁面的地址(我實驗過,地址改變了),當你在點擊的時候,因爲地址對了,他就會執行OnClick事件。
相關文章
相關標籤/搜索