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

領先技術:子類化與重寫 ASP.NET 頁面(下)— tagMapping 與控制項替換

     編輯:關於ASP.NET

承上篇,探討無原始碼情境下修改 ASP.NET 頁面行為的進階技巧。

tagMapping:宣告式控制項類型重導向

ASP.NET 2.0 引入 <pages> 區段的 <tagMapping>,可將編譯時期的標記類型映射至替代類型,無需修改 .aspx 頁面。

<pages>
  <tagMapping>
    <add tagType="System.Web.UI.WebControls.GridView"
         mappedTagType="CustomControls.SecureGridView" />
  </tagMapping>
</pages>

所有頁面的 <asp:GridView> 將自動編譯為 SecureGridView,實現全站控制項替換(如修補 SQL 注入風險的舊版控制項)。

背景案例:SQL 注入緊急修補

客戶網站大量頁面直接拼接查詢字串構建 SQL:

Dim code = Request.QueryString("Code").ToString()
Dim cmd = "SELECT * FROM customers WHERE id='" & code & "'"

快速修補導致新問題,需在不動原始碼前提下替換全站易受攻擊控制項。tagMapping 正是為此設計。

其他宣告式替換技巧

  • buildProvider:自訂編譯提供者,處理特定副檔名。
  • HTTP 模組 + Response.Filter:輸出流過濾/重寫 HTML。
  • VirtualPathProvider:虛擬路徑映射至資料庫/壓縮包等非檔案來源。

結合上篇的頁面基類替換、控制項樹操作、HTTP 處理常式重導向,構成「無原始碼修改 ASP.NET 行為」完整工具箱。

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