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

ASP.NET 頁面間傳值完整技術比較與最佳實踐

     編輯:.NET 實例教學

七大傳值方式速查

方式適用場景優點缺點
QueryString (GET)少量非敏感資料、書籤分享簡單、可書籤、支援瀏覽器前進後退長度限制、明文、可被竄改
Form POST表單送出、大量資料無長度限制、不顯示網址ASP.NET 預設 PostBack 自身,跨頁需特殊處理
Session用戶狀態、購物車、多步驟精靈伺服端儲存、安全、容量大消耗記憶體、需管理逾時、Web Farm 需共享
Application全站計數器、快取共用資料全域唯一、所有用戶可見並發鎖爭用、不適合用戶專屬資料
Cookie記住登入、偏好設定、追蹤持久化、跨 Session 存活大小 4KB、用戶可刪除/禁用、安全性風險
Response.Redirect流程導向、帶少量參數客戶端跳轉、URL 可見兩次請求、參數明文
Server.Transfer同一應用程式內大量參數傳遞、隱藏目標 URL單次請求、保留 Request/Context、可直接存取前頁面 public 屬性URL 不變、瀏覽器歷史無記錄、僅限同應用程式

Server.Transfer 進階模式:強型別前頁面存取

單一來源頁面

// SourcePage.aspx.cs
public string StartDate { get { return txtStartDate.Text; } }
public string EndDate { get { return txtEndDate.Text; } }

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

// ResultPage.aspx.cs
protected void Page_Load(object sender, EventArgs e) {
    SourcePage src = (SourcePage)Context.Handler;
    Response.Write("Start: " + src.StartDate + "<br/>End: " + src.EndDate);
}

多來源頁面共用目標頁:介面契約模式

// 共用參數物件
public class QueryParams {
    public string StartDate { get; set; }
    public string EndDate { get; set; }
}

// 介面
public interface IQueryParams {
    QueryParams Parameters { get; }
}

// 各查詢頁面實作介面
public class QueryPageA : Page, IQueryParams {
    public QueryParams Parameters { get; private set; }
    protected void btn_Click(object sender, EventArgs e) {
        Parameters = new QueryParams { StartDate = txt1.Text, EndDate = txt2.Text };
        Server.Transfer("ResultPage.aspx");
    }
}

// 目標頁面通用處理
protected void Page_Load(object sender, EventArgs e) {
    QueryParams p = new QueryParams();
    if (Context.Handler is IQueryParams provider) {
        p = provider.Parameters;
    }
    // 使用 p.StartDate, p.EndDate...
}

選型建議

  • 公開分享、書籤、SEO → QueryString
  • 敏感資料、大量參數、不想暴露 URL → Server.Transfer + 介面模式
  • 跨頁面流程狀態 → Session
  • 持久化偏好 → Cookie

善用 Server.Transfer 搭配介面契約,能建構乾淨、強型別、可維護的多頁面協作架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved