是否可以修改控件属性';s在不扩展控件的情况下获取和设置方法

本文关键字:控件 扩展 情况下 获取 设置 方法 修改 属性 是否 | 更新日期: 2023-09-27 18:25:28

假设我运行的网站有许多.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的每个实例?

是否可以修改控件属性';s在不扩展控件的情况下获取和设置方法

您可以向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);
}