我有一个基本控件:
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;
上收到对象引用错误。我有点明白为什么,但我有两个问题:
- 每个
MyChildControl
不应该引用它自己的BaseControl
版本,而反过来又注册了它自己的PageLoadComplete
? - 如何检查它是否不为空?我似乎做不到
!= null
.
编辑:似乎Page
是空的,检查Page != null
可以解决问题,但我仍然不明白Page
如何为空。
Page_LoadComplete
不能为空,它只是为methog Page_LoadComplete
创建的委托。所以我认为 Page.LoadComplete
中的页面可能是空的,或者页面具有将处理程序添加到事件 LoadComplete 的自定义逻辑,并且那里有 ref 错误