假设我运行的网站有许多.aspx页面,这些页面继承自一个名为FormPage.cs
的文件。创建这些页面时,其中许多页面使用了隐藏字段,如System.Web.UI.WebControls.HiddenField
。现在,人们已经意识到,这些隐藏字段的Value
属性需要以下内容:
public override string Value
{
get
{
return HttpUtility.HtmlDecode(base.Value);
}
set
{
base.Value = HttpUtility.HtmlEncode(value);
}
}
是否可以在FormPage.cs
文件中修改HiddenField
的get和set方法,而不创建从中继承的新类,这样我就不必在所有页面中替换HiddenField
的每个实例?
您可以向HiddenField控件添加一个扩展方法——它不需要继承就可以工作。但是解决方案也是有限的,因为默认情况下必须更改代码以引用扩展方法。
public static void SetValue(this HiddenField c, string text)
{
c.Value = HttpUtility.HtmlEncode(text);
}
public static string GetValue(this HiddenField c)
{
return HttpUtility.HtmlDecode(c.Value);
}