0

假设我正在运行一个站点,其中包含许多从名为 .aspx 的文件继承的 .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文件中修改 get 和 set 方法HiddenField而不创建继承自它的新类,这样我就不必替换HiddenField所有页面中的每个实例?

4

1 回答 1

0

您可以向 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);
}
于 2013-07-30T16:41:16.110 回答