Basecontrol Page.LoadComplete -= 如果多次加载子控件,Page_LoadComplete



我有一个基本控件:

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,那么我会在BaseControl Page.LoadComplete -= Page_LoadComplete;上收到对象引用错误。我有点明白为什么,但我有两个问题:

  1. 每个MyChildControl不应该引用它自己的BaseControl版本,而反过来又注册了它自己的PageLoadComplete
  2. 如何检查它是否不为空?我似乎做不到!= null.

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

Page_LoadComplete不能

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

相关内容

  • 没有找到相关文章

最新更新