页面/控件生命周期

时间:2011-04-08 17:33:30

标签: c# asp.net lifecycle

我在页面中有usercontrol x,在usercontol x中是usercontrol z。在usercontrol x中触发事件后,我需要对usercontrol z执行某些操作。我知道这是非常通用的,但它只是为我的问题提出了一个简单的前提。

是否有一种简单的方法可以获取在页面生命周期中触发的所有事件的列表,无论我是否订阅它们,以找出页面上的事件A和控件z上的事件B之间发生的事件?我认为在打开页面跟踪时会出现类似的情况,但我没有看到列出的任何事件。我想这会是管道可以生成的东西,也许我可以使用反射来获取列表?

我发现这个主题一般很难搜索,也许我使用的是坏关键字... 我确实在codeproject.com上找到了一个旧项目,但我希望到现在可以提供更优雅的东西。

*为了澄清,我希望在页面上所有控件的每个潜在事件(订阅或不订阅)的回发之后生成一个列表,从init到卸载的触发顺序。

此帖:Tracing all events in VB.NET 让我更接近一点,但这些是基于每个控制的列表,而不是按时间顺序。

3 个答案:

答案 0 :(得分:1)

使用<%@ Page Trace =“true”%>启用跟踪在页面属性中。应该按顺序显示生命周期事件。

答案 1 :(得分:0)

好吧,如果你只是想看看事件的一般情况,以及它们发射的顺序,check out this article。得到它们......好吧,这取决于你的意思。它可以像通过反思一样简单:

EventInfo[] events = this.GetType().GetEvents();

答案 2 :(得分:0)

MSDN上的ASP.NET Page Life Cycle Overview列出PagePreInitUnload发起的所有事件。大多数这些事件都会触发从System.Web.UI.Control继承的任何类。


更新

现在我更好地理解了你的意图,一种可能的解决方案是循环遍历每个控件的事件并分配一个记录事件调用的事件处理程序。 retrieve all of the event handlers assigned to an event至少有一种方法,改编该代码来分配事件处理程序应该不会太难。