0
我有一個基本控制體REF錯誤: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
然後我得到Page.LoadComplete -= Page_LoadComplete;
BaseControl
對象ref錯誤。我有點明白爲什麼,但我有2個問題:
- 應該不是每個
MyChildControl
參考它自己版本的BaseControl
這反過來又註冊它自己的PageLoadComplete
? - 如何檢查它是否不爲空?我似乎無法做
!= null
。
編輯:看來Page
爲空和檢查Page != null
解決了問題,但我還是不明白怎麼Page
爲空。
「Page_LoadComplete」不能爲null,它只是爲methog Page_LoadComplete創建的委託。所以我認爲'Page.LoadComplete'中的頁面可能爲null,或者頁面具有用於向事件LoadComplete添加處理程序的自定義邏輯,並且在那裏有ref錯誤。 – Nikolay 2012-04-13 10:16:26
好吧,似乎是這樣的,因爲檢查'Page!= null'似乎將其排序。我只能假設我將某個地方的頁面置爲空。然後看。 – webnoob 2012-04-13 10:18:40
@尼科萊 - 你可以張貼您的評論作爲答案請。這解決了我的問題,儘管讓我有點困惑:) – webnoob 2012-04-13 14:31:17