今天寫了一個簡單的聊天室,有登陸頁面和聊天室,當從登陸頁面跳入到聊天室事後,卻發現要點擊兩次發送按鈕才能發送到顯示區,而後發送按鈕正常運行。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語句->服務器轉向新的文件。