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

时间:2017-06-13 23:20:55

标签: asp.net dynamic user-controls

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

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

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

1 个答案:

答案 0 :(得分:1)

event diagram

尝试在PreInit阶段添加控件,以便控件在init阶段存在,并在处理回发数据之前可用