我的工作是有一个叫做外外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
,它工作正常。我想尽量避免这种情况。内控制的
仅供参考,在生命周期或方法顺序方面没有什么特别的用户控制。它们与所有其他类型的控制相同。 –