2

在我的 Web 应用程序中,我在 page_loadComplete 事件中加载用户控件。这很好用,但是当在用户控件中单击按钮时,永远不会触发 click 事件。这与页面生命周期有关吗?该按钮单击 (UI) 事件发生在 LoadComplete 事件之前吗?

4

3 回答 3

3

在事件处理程序触发之前,您需要确保再次订阅按钮的单击事件。LoadComplete 发生在控制事件之后。作为参考,ASP.NET 页面生命周期概述给出了一个很好的总结。

片段:

  • ...
  • 加载
  • 控制事件
  • 加载完成
  • 预渲染
  • ...

您还需要确保您动态加载的所有控件最终都位于同一个位置,以便可以将 viewstate 和 controlstate 重新应用到与回发之前相同的层次结构。

基本上,您需要在每次回发时加载所有动态控件。

这是一个有同样问题的人,以及其中一些的解决方案:ASP.NET 动态控件

于 2009-10-21T07:31:21.617 回答
1

实际上,您的情况是,当您单击按钮时,在事件引发之前,LoadCoplete 事件首先在页面生命周期中触发,并且再次创建相同的控件,并且您的事件丢失了。

于 2009-10-21T07:27:09.610 回答
0

ASP.NET 页面中的事件处理发生在验证阶段之后和渲染阶段之前。验证阶段发生在加载之后。

LoadComplete 发生在 Control 事件之后和 RreRender 事件之前。

于 2009-10-21T07:24:07.840 回答