首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET Response.Redirect 頁面跳轉與參數傳遞完整指南

     編輯:ASP.NET 基礎

Response.Redirect 是 ASP.NET Web Forms 最常用的頁面導向方式,本文涵蓋基本跳轉、查詢字串參數傳遞、目標頁面接收參數、以及常見陷阱與替代方案。

基本跳轉

protected void LinkButton1_Click(object sender, EventArgs e)
{
    string url = "InfoShow.aspx";
    Response.Redirect(url);
}

帶參數跳轉

protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
    string userName = e.Item.Value.Trim();
    string url = "InfoRelease.aspx?UserName=" + Server.UrlEncode(userName);
    Response.Redirect(url);
}
  • 使用 Server.UrlEncode 編碼參數值,防止特殊字元破壞 URL。
  • 多參數以 & 串接:?a=1&b=2。

目標頁面接收參數

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string userName = Request.QueryString["UserName"]; // 建議用 QueryString 而非 Request["Key"]
        if (!string.IsNullOrEmpty(userName))
        {
            txtInfoclass.Text = userName;
        }
    }
}
  • Request.QueryString["Key"] 明確從查詢字串取值,避免與 Form、Cookies、ServerVariables 衝突。
  • 永遠檢查 null 或 String.IsNullOrEmpty。

Response.Redirect 兩個多載差異

多載行為
Redirect(url)送出 302 回應,嘗試終止目前執行緒(拋出 ThreadAbortException),後續程式碼不執行。
Redirect(url, false)送出 302 回應,不終止執行緒,後續程式碼繼續執行。需自行 return 或 CompleteRequest()。

常見問題與最佳實務

  • ThreadAbortException:Redirect(url) 會拋出此例外,若在 try-catch 捕捉 Exception 並吞掉,會導致導向失敗。解決:捕捉時重新拋出 throw; 或使用 Redirect(url, false) 配合 Context.ApplicationInstance.CompleteRequest()。
  • 相對/絕對路徑:~/ 僅伺服器端控件識別,Redirect 需解析為絕對路徑:ResolveUrl("~/InfoShow.aspx") 或 VirtualPathUtility.ToAbsolute("~/InfoShow.aspx")。
  • 大量資料傳遞:查詢字串有長度限制(約 2KB),敏感資料不可放 URL。改用 Session、TempData (MVC)、資料庫暫存或 POST 重導向模式 (PRG)。
  • UpdatePanel 內導向:部分更新面板中 Redirect 會失敗,需觸發完整回發或使用 ScriptManager.RegisterStartupScript 輸出 window.location.href。

替代方案:Server.Transfer

Server.Transfer("Target.aspx", true); // 保留 QueryString/Form
  • 伺服器端轉移,瀏覽器 URL 不變,效能稍好(無 302 往返)。
  • 目標頁面可存取前一頁面的 Context.Handler (PreviousPage) 取得控件值。
  • 不適用跨應用程式、需 SEO 友善 URL 時。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved