Web 開發中頁面間傳值是基礎技能。本文整理七種主流方式,附代碼片段與適用場景分析。
| 方法 | 代碼範例 | 優點 | 缺點/注意 |
|---|---|---|---|
| 1. QueryString | Response.Redirect("B.aspx?id=1")Request["id"] | 簡單、可書籤、無伺服器負擔 | 長度限制、明文、可被篡改 |
| 2. Session | Session["k"]=v;Session["k"] | 容量大、跨頁面、相對安全 | 佔用伺服器記憶體、需序列化(StateServer/SQL) |
| 3. Application | Application["k"]=v; | 全域共享、適合計數器/快取 | 所有用戶共用、並發需鎖、重啟失效 |
| 4. Cookie | Response.Cookies["k"].Value=v; | 持久化、跨會話、客戶端儲存 | 大小 4KB、用戶可禁用/刪除、安全性需加密 |
| 5. Server.Transfer | Server.Transfer("B.aspx")目標頁用 Context.Handler 取值 | 伺服器端跳轉、URL 不變、保留表單/QueryString | 僅限同應用程式、瀏覽器歷史不記錄、相對路徑問題 |
| 6. Cross-Page PostBack | <asp:Button PostBackUrl="B.aspx" />B頁用 PreviousPage.FindControl | 強型別存取前頁控件、無 Session 開銷 | 緊耦合、前頁必須是 WebForm、ViewState 增大 |
| 7. Cache | Cache.Insert("k", v); | 高效能、支援過期/依賴、記憶體管理 | 非持久、可能被移除、需檢查 null |