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

ASP.NET GridView 模板列超鏈接無法獲取 QueryString 參數排查

     編輯:程式設計綜合問答

在 TemplateField 中用 Eval("categoryID") 構建超鏈接 List.aspx?categoryId=...,但後台 Request.QueryString["categoryId"] 取不到值。常見原因有三:

  1. 數據源綁定字段名不匹配:檢查 DataTable/實體類是否真有 categoryID(大小寫敏感),而非 CategoryId 或 cat_id。
  2. GridView 未正確 DataBind:確保 !IsPostBack 時綁定,且未在後續事件中重置。
  3. URL 重寫/路由干擾:若使用 URL Rewrite,實際請求路徑可能不帶 QueryString,需檢查 Request.RawUrl。

排查步驟

// 前台頁面加載時打印調試
protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        BindGrid();
    }
    // 檢查原始請求
    System.Diagnostics.Debug.WriteLine("RawUrl: " + Request.RawUrl);
    System.Diagnostics.Debug.WriteLine("categoryId: " + Request.QueryString["categoryId"]);
}

最佳實踐

  • 超鏈接用 DataNavigateUrlFields + DataNavigateUrlFormatString 替代手動 Eval 拼接,減少錯誤。
  • 若需 POST 傳值,改用 LinkButton + CommandArgument。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved