【发布时间】:2017-11-15 21:56:08
【问题描述】:
我正在使用 ASP.NET 用户控件在我的应用程序中封装一些功能。我知道控件中的 Page_Load 处理程序在托管它的页面中的 Page_Load 处理程序之后运行,因此我无法从主机页面的 Page_Load 初始化控件,这很烦人。我在主机页面上使用 Page_LoadComplete 来执行此操作,当控件在设计时静态添加到页面的 HTML 时,它可以正常工作。
但是,当我尝试在运行时动态加载控件时,出现了问题。我成功地实例化了控件并将其添加到页面中的面板中。我将它添加到集合中,以便将初始化推迟到 Page_LoadComplete 之前的情况。但是,当 Page_LoadComplete 中的代码尝试初始化控件时,它会失败,因为显然控件尚未加载。具体来说,我发现当控件的 Page_Load 被触发时(就在宿主页面的 Page_Load 之后),它的本地字段还没有被初始化。例如,映射用户控件中子控件的字段仍然为空,我添加的其他字段也是如此。你可能会争辩说,我添加的字段应该由我初始化,但映射子控件的字段应该在 Page_Load 运行之前就已经初始化,对吧?
这是预期的行为吗?如果是这样,我该怎么做才能在动态加载时正确初始化我的控件?非常感谢。
【问题讨论】:
标签: asp.net dynamic user-controls