我有一个基本控制:
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;
的{{1}}上收到对象引用错误。我有点理解为什么,但我有两个问题:
BaseControl
不应该引用它自己的MyChildControl
版本,而BaseControl
又会注册它自己的PageLoadComplete
吗?!= null
。编辑:似乎Page
为空,检查Page != null
可以解决问题,但我仍然不明白Page
是如何为空。
答案 0 :(得分:2)
Page_LoadComplete
不能为空,它只是为方法Page_LoadComplete
创建的委托。所以我认为Page.LoadComplete
中的Page可能为null或者页面具有自定义逻辑,用于向事件LoadComplete添加处理程序并且在那里有ref错误