0

我有一个基本控制:

public partial class BaseControl : System.Web.UI.UserControl
{
    protected virtual void Page_Load(object sender, EventArgs e)
    {
    }

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Page.LoadComplete += Page_LoadComplete;
    }

    protected virtual void Page_LoadComplete(object sender, EventArgs e)
    {
        Page.LoadComplete -= Page_LoadComplete;
    }
}

然后我有一个由此派生的控件

public partial class MyChildControl : BaseControl

我遇到的问题是,如果我加载MyChildControl不止一次,那么我会Page.LoadComplete -= Page_LoadComplete;BaseControl. 我有点明白为什么,但我有两个问题:

  1. 不应该每个MyChildControl引用它自己的版本,BaseControl然后注册它自己的版本PageLoadComplete吗?
  2. 如何检查它是否不为空?我好像做不到!= null

编辑:这似乎Page是空的,检查Page != null解决了这个问题,但我仍然不明白它是如何Page为空的。

4

1 回答 1

2

Page_LoadComplete不能为空,它只是为 mehog 创建的委托Page_LoadComplete。所以我认为 Page inPage.LoadComplete可能是 null 或者页面具有自定义逻辑,用于将处理程序添加到事件 LoadComplete 并且那里有 ref 错误

于 2012-04-13T14:32:05.273 回答