我的工作是有一個叫做外外UserControl
,做一些邏輯,以確定哪些內部UserControl
在其代碼中靜態加載項目之間。有幾個內部控制,我們姑且稱之爲Inner1,Inner2,並Inner3。方法令家長和內部用戶控件
ALL內控制繼承外控制,所以:
Outer : System.Web.UI.UserControl
Inner1 : Outer
Inner2 : Outer
Inner3 : Outer
在Outer.cs
我有一些領域和方法,內部控制訪問,如
List<string> foo = null;
protected void Page_Load(object sender, EventArgs e)
{
}
public void DoStuff()
{
foo = MethodToPopulateFoo(); // this always works and returns a List<string> even if its empty
// other stuff here
}
現在,這裏是我的問題:如果我的Outer
的Page_Load
調用DoStuff()
我希望它運行,設置foo
到列表和foo
變得不再null
。然後的任何內部控制的Page_Load
運行時,每一類又可以訪問foo
和它不會null
。
這不會發生。相反,在Inner1
,Inner2
,或Inner3
任何Page_Load
- 當我訪問foo
它總是null
。然而,當在瀏覽器加載頁面的Outer
的Page_Load
完全執行,那麼InnerX
的Page_Load
負荷,所以我很困惑,爲什麼foo
是null
當我再次打電話內部控制的Page_Load
我知道外後運行控制(設置foo
)。
如果我要從外Page_Load
中刪除DoStuff()
來電,並進入每個內部Page_Load
,它工作正常。我想盡量避免這種情況。內控制的
僅供參考,在生命週期或方法順序方面沒有什麼特別的用戶控制。它們與所有其他類型的控制相同。 –