我正在开发一个项目,该项目有一个UserControl
名为Outer的外部,它执行一些逻辑来确定UserControl
在其代码中静态加载哪个内部。有几个内部控件,我们称它们为Inner1、Inner2和Inner3。
所有内部控件都继承外部控件,因此:
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
}
现在,这是我的问题:如果我调用我希望它运行的,设置DoStuff()
为一个列表并变为不再。然后,当任何内部控件运行时,每个控件都可以访问,但不会。Page_Load
Outer
foo
foo
null
Page_Load
foo
null
这不会发生。相反,在任何,Page_Load
或--当我访问它时总是. 然而,当页面在浏览器中加载时,完全执行,然后加载,所以我很困惑为什么当我调用我知道在外部控件(设置)之后运行的内部控件时再次出现。Inner1
Inner2
Inner3
foo
null
Page_Load
Outer
Page_Load
InnerX
foo
null
Page_Load
foo
如果我DoStuff()
要从外部删除呼叫Page_Load
并进入每个单独的内部Page_Load
,它工作正常。我想避免这种情况。