首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP.NET WebForms頁面間參數傳遞:QueryString與URL編碼詳解

     編輯:程式設計綜合問答

業務場景

經典WebForms雙頁面傳值:第一頁構建帶參數URL跳轉,第二頁接收並解析參數。

第一頁:發送端代碼


// 假設按鈕點擊事件
protected void btnSubmit_Click(object sender, EventArgs e) {
    string name = txtName.Text;      // "張三"
    int age = int.Parse(txtAge.Text); // 25
    
    // 構建查詢字符串,& 符號分隔多個參數
    string url = $"Page2.aspx?name={Server.UrlEncode(name)}&age={age}";
    Response.Redirect(url);
}

生成URL示例:Page2.aspx?name=%E5%BC%B5%E4%B8%89&age=25

第二頁:接收端代碼


protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        // QueryString集合自動解析URL參數
        string name = Request.QueryString["name"]; // 自動URL解碼
        string ageStr = Request.QueryString["age"];
        
        if (!string.IsNullOrEmpty(name)) {
            lblWelcome.Text = $"歡迎,{name}!年齡:{ageStr}";
        }
    }
}

核心知識點解析

& 符號的雙重身份

上下文含義示例
URL查詢字符串參數分隔符?a=1&b=2
ASPX標記語法XML實體引用,渲染為 && → 頁面顯示 &
C#字符串普通字符"a&b"

URL編碼/解碼機制

  • 發送端:Server.UrlEncode() 或 HttpUtility.UrlEncode() 將中文/特殊字符轉為%XX格式
  • 接收端:Request.QueryString 內部自動調用 UrlDecode() 還原原始值
  • 編碼一致性:雙端必須使用相同編碼(推薦UTF-8),否則中文亂碼

完整參數構建最佳實踐


var parameters = new Dictionary<string, string> {
    { "name", txtName.Text },
    { "age", txtAge.Text },
    { "city", ddlCity.SelectedValue }
};

var queryString = string.Join("&", 
    parameters.Select(kvp => $"{kvp.Key}={HttpUtility.UrlEncode(kvp.Value)}")
);

Response.Redirect($"TargetPage.aspx?{queryString}");

QueryString vs 替代方案對比

方案優點缺點適用場景
QueryString (GET)簡單、可收藏、可分享、瀏覽器歷史長度限制(~2KB)、明文暴露、不適合敏感數據非敏感導航、搜索、分頁
Session/Application容量大、不顯示URL、支援複雜對象服務端內存佔用、需管理過期、多標籤頁衝突用戶狀態、購物車、權限數據
Post/Redirect/Get無長度限制、相對安全需兩請求、不可直接收藏表單提交、修改操作
隱藏字段/ViewState頁面級持久化增加頁面體積、僅Postback有效頁面內部狀態保持

安全加固建議

  • 參數驗證:接收端必須驗證類型、範圍、格式
  • 敏感數據禁用:密碼、Token、ID號絕不走QueryString
  • 防範XSS:輸出到頁面時HttpUtility.HtmlEncode()
  • 防CSRF:狀態改變操作驗證Anti-Forgery Token

總結

QueryString是WebForms頁面傳值最基礎方式,&在URL中分隔參數,在ASPX中需轉義。掌握UrlEncode/QueryString編解碼機制,配合參數驗證與安全編碼,即可構建健壯的頁面跳轉傳值鏈路。

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