ASP.NET 中的标签映射(Tag mapping )(译)

译自:http://blog.madskristensen.dk/post/Tag-mapping-in-ASPNET.aspx

最近我开始在 ZYB 工作但并没有看所有的代码。有一天我看到了一个 web.config 的一个特殊的节点 tagMapping。我之前从来没有见到过,直到问了我周围的同事。基本上,它是在编译的时候将所有的一种类型转换成另一种类型。在自然语言的意思是它能将你整个网站中的所有例如 System.Web.UI.WebControls.Textbox 实例转换成另一个组件。

如此酷的作用,我来做一个简单的示例。我已经建了一个简单的组件,这个组件继承自 TextBox 并重写了 Text 属性,因此它能 HTML 编码 text。我把它放置到 App_Code 文件夹下并命名为 SafeTextBox。

public class SafeTextBox : System.Web.UI.WebControls.TextBox
{ public override string Text
{ get
{ return base.Text;
} set
{ base.Text = System.Web.HttpUtility.HtmlEncode(value);
} }
}

然后我需要在 web.config 中通过标签映射将所有的文本框和 SafeTextBox 实例关联起来。它能在整个网站中轻松的覆盖所有的 TextBox 实例。这个就是需要的 Web.config 配置:

<pages> <tagMapping> <add tagType="System.Web.UI.WebControls.TextBox" mappedTagType="SafeTextBox"/> </tagMapping> </pages>

这是一个聪明的方法将你自己的服务器组件应用到一个网站上去。 可惜的是直到最近我才知道有这种方法。