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

ASP.NET 頁面間傳遞多個參數值的三種常用方法

     編輯:ASP.NET 基礎

方法一:CommandArgument 夾帶多值 (DataGrid/GridView/DataList/Repeater)

在 `ItemTemplate` 中以逗號或特定分隔符串聯多欄位:

<asp:LinkButton ID="lnkEdit" runat="server" 
    CommandArgument='<%# Eval("DictID") + "|" + Eval("DictType") %>'
    CommandName="Edit" Text="編輯" />

後端解析 (RowCommand / ItemCommand)

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Edit")
    {
        string[] args = e.CommandArgument.ToString().Split('|');
        string dictId = args[0];
        string dictType = args[1];
        Response.Redirect($"Edit.aspx?id={dictId}&type={dictType}");
    }
}

方法二:超連結 QueryString (最簡單、可書籤、可分享)

<a href='Detail.aspx?id=<%# Eval("DictID") %>&type=<%# Eval("DictType") %>'>詳情</a>

目標頁面:

string id = Request.QueryString["id"];
string type = Request.QueryString["type"];
  • 優點:無 Postback、支援瀏覽器前進後退、可收藏分享。
  • 缺點:參數明文、長度限制 (~2KB)、敏感資料需加密。

方法三:PostBackUrl 跨頁面回傳 (Web Forms 特有)

<asp:Button ID="btnGo" runat="server" Text="去目標頁" 
    PostBackUrl="~/TargetPage.aspx" />

目標頁面 (`TargetPage.aspx`) 取值:

public partial class TargetPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null)
        {
            // 1. 找控制項 (需在來源頁面 public property 或 FindControl)
            TextBox txt = (TextBox)PreviousPage.FindControl("txtSource");
            string val = txt?.Text;

            // 2. 或直接存取 Public Property (來源頁面需宣告 public string MyProp { get; })
            // string val = ((SourcePage)PreviousPage).MyProp;
        }
    }
}
  • 需在來源頁面 `<%@ Page %>` 加入 `<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>` 以獲得強型別 `PreviousPage`。
  • 注意:`EnableViewStateMac="false"` 會降低安全性,建議改用 QueryString 或 Session。

補充:其他跨頁面傳值技術

技術適用場景生命週期
Session大量資料、敏感資訊、多步驟精靈Session 存活期間
Cache暫存共享資料、效能優先依過期策略
Context.ItemsServer.Transfer 同一請求內傳遞單一請求
Cookie跨瀏覽器分頁、持久化偏好依 Expires
HiddenField + PostBack同頁面回傳攜帶額外值單一回傳

選型建議

  • **導航/分享/書籤** → QueryString (GET)
  • **表單提交/修改/刪除** → POST (Form/PostBackUrl)
  • **敏感/大量/多步驟** → Session / TempData (MVC)
  • **DataGrid 操作列** → CommandArgument + QueryString 導向詳細頁
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved