【问题标题】:Dynamically loaded ASP.NET user control fails to initialize动态加载的 ASP.NET 用户控件无法初始化
【发布时间】: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


    【解决方案1】:

    event diagram

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

    【讨论】:

    • 我试过了,问题还是一样。我通过在我的 HTML 中使用静态声明的控件并将初始化推迟到 Page_LoadComplete 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多