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

ASP.NET 頁面導航方式全解析:超鏈接、Redirect、Transfer、Execute 對比選擇指南

     編輯:ASP.NET 基礎

一、超鏈接導航(用戶主動)

二、服務端編程導航(代碼控制)

方法運行位置地址欄變化數據傳遞性能/適用場景
Response.Redirect客戶端(302 跳轉)變為新 URLQueryString 可攜帶兩次請求,跨域/跨服務器,非 ASPX 資源
Server.Transfer服務端不變(隱藏轉向)默認不傳遞,`preserveForm=true` 可保留 Form/QueryString單次請求,同服務器 ASPX 間,需目標頁 `EnableViewStateMac=false`
Server.Execute服務端不變可訪問源頁面 Form/QueryString類似函數調用,捕獲輸出插入當前頁,需 `EnableViewStateMac=false`

三、代碼示例

Response.Redirect

Response.Redirect("Target.aspx?id=123");

Server.Transfer(保留表單)

Server.Transfer("Target.aspx", true); // 保留 Form/QueryString
// 目標頁面頁面指令:<%@ Page EnableViewStateMac="false" %>

Server.Execute(捕獲輸出)

StringWriter sw = new StringWriter();
Server.Execute("Target.aspx", sw);
Literal1.Text = sw.ToString(); // 將目標頁輸出插入當前頁指定位置

四、選擇決策樹

  1. 用戶決定何時去哪 → **超鏈接 / HyperLink**。
  2. 程序決定去哪,用戶觸發 → **HyperLink 動態 NavigateUrl**。
  3. 跳轉到**其他服務器/非 ASPX** → **Response.Redirect**。
  4. 同服務器 ASPX 間,**性能優先、隱藏真實路徑** → **Server.Transfer**。
  5. 需要**組合多個頁面輸出**(如母版頁局部填充) → **Server.Execute**。
  6. 要求**輸出合法 HTML**(單一 ``/``) → **Response.Redirect**。

五、常見坑提醒

  • `Server.Transfer`/`Execute` 後頁面可能包含多組 `` 導致瀏覽器渲染異常,IE 容錯較好但其他瀏覽器可能亂碼。
  • `EnableViewStateMac=false` 降低安全性,僅在可信內部系統使用。
  • `Response.Redirect` 會拋出 `ThreadAbortException`,`catch` 時需注意不吞噬該異常(或用 `Response.Redirect(url, false)` + `Context.ApplicationInstance.CompleteRequest()`)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved