我有一个用户控件(导航)嵌套在另一个用户控件(标题)中,该控件是从控件类(标准)动态加载的。
用户控件、Navigation 和 Header 的 AutoEventWireup = false。
控件类 Standard 调用从配置项加载 Header 用户控件。
private void layoutAndRender(HtmlTextWriter output, string UserControlKey, NameValueCollection UserControlsConfiguration)
{
if(UserControlsConfiguration[UserControlKey] != null && UserControlsConfiguration[UserControlKey].ToString() != "")
{
string suc = System.Web.HttpContext.Current.Request.ApplicationPath + UserControlsConfiguration[UserControlKey].ToString();
UserControl ucToRender = (UserControl)this.Page.LoadControl(suc);
ucToRender.RenderControl(output);
}
}
我的问题是我想在 Navigation 用户控件中初始化一个可以接受 Page.Request 和 Page.Response 的对象,但是在后面的 Navigation 代码中似乎没有触发事件。
我用来初始化我的对象的代码是:
this.browser = new Browser(this.Request, this.Response);
我尝试在 Navigation 构造函数期间执行此操作,但此时未设置 this.Request 和 this.Response。
我尝试在void Page_Load(object sender, System.EventArgs e)
方法中使用该语句,但这似乎没有触发,即使我this.Load += new System.EventHandler(this.Page_Load);
在 Navigation 构造函数中有。
我还为 Page_Init 和 Page_PreRender 尝试了类似的语句,但这些语句似乎都没有触发。
是否加载了 LoadControl 的控件不会触发 Load 或 Init 事件,如果以我加载它们的方式加载,并且它可能包含的任何用户控件也是如此?