动态加载的ASP.NET用户控件无法初始化

问题描述:

我正在使用ASP.NET用户控件将一些功能封装在我的应用程序中。我知道,控件中的Page_Load处理程序在托管它的页面中的Page_Load处理程序之后运行,因此我无法从主机页面的Page_Load初始化控件,这很烦人。我在主页上使用Page_LoadComplete来做到这一点,并且在设计时将控件静态添加到页面的HTML时,它可以正常工作。动态加载的ASP.NET用户控件无法初始化

但是,当我尝试在运行时动态加载控件时,事情就会出错。我成功实例化控件并将其添加到页面中的Panel。我将它添加到一个集合中,以便像前一种情况一样,将初始化推迟到Page_LoadComplete。但是,当Page_LoadComplete中的代码尝试初始化控件时,它失败,因为显然控件尚未加载。具体来说,我发现当控件的Page_Load被触发时(在主页的Page_Load之后),它的本地字段还没有被初始化。例如,映射用户控件中的子控件的字段仍然为空,我添加的其他字段也是如此。你可能会争辩说,我添加的字段应该由我初始化,但映射子控件的字段应该在Page_Load运行之前初始化,对吧?

这是预期的行为?如果是这样,动态加载时我能做些什么来正确初始化我的控制?非常感谢。

event diagram

尝试添加控件在PreInit阶段,这样的控制,在初始阶段,在那里,回传数据

+0

我试过的处理之前可用的,而问题保持不变。我通过在HTML中使用静态声明的控件,并将初始化推迟到Page_LoadComplete来解决问题。 – CesarGon