我可以从继承自asp.net中的BasePage的页面取消订阅BasePage事件

时间:2010-08-31 04:13:29

标签: asp.net

我有一个BasePage,它具有所有页面所需的通用功能。我在页面基础上定义了一个PreRender()事件。有2-3页不需要此功能。我可以从我的.aspx页面取消订阅BasePage的PreRender()事件。我尝试将BasePage转换为Page

(PageBase as Page).PreRender -= OnPreRender(new EventArgs());

但它说PageBase是一种类型,但用作变量。如何实现这一目标。请建议。

我正在添加PreRender()事件,如下所示:

public PageBase()
{
    this.PreInit += new EventHandler(PageBase_PreInit);
    this.PreRender += new EventHandler(PageBase_PreRender);


}

1 个答案:

答案 0 :(得分:2)

你的例子看起来很近。如果你尝试怎么办?

base.Page.PreRender -= new EventHandler(Page_PreRender);

这假设您使用以下内容添加了事件:

base.Page.PreRender += new EventHandler(Page_PreRender);

另一个选项是覆盖BasePage中的OnPreRender方法,并使用受保护的字段来检查是否应该完成。对于这三个页面,将其设置为false:

    protected bool _useMyCustomPreRender = true;
    protected override void OnPreRender(EventArgs e)
    {
        if (_useMyCustomPreRender)
        {
            // do my logic here
        }
        base.OnPreRender(e);
    }