2011-04-08 55 views
1

我在頁面中有usercontrol x,在usercontol中x是usercontrol z。在用戶控件x觸發事件後,我需要對usercontrol z做些什麼。我知道這是非常通用的,但它只是爲我的問題奠定了一個簡單的前提。頁面/控件生命週期

是否有一種簡單的方法可以獲取在頁面生命週期中觸發的所有事件的列表,無論我是否訂閱了它們或不瞭解頁面上的事件A與控件z上的事件B之間觸發了哪些事件?我認爲在打開頁面跟蹤時會出現這樣的情況,但我沒有看到列出的任何事件。我想這將是管道可能產生的東西,也許我可以使用反射來獲得一個列表?

我發現這個話題很難在一般情況下進行搜索,也許我使用了錯誤的關鍵字... 我在codeproject.com上找到了一箇舊項目,但我希望現在會有更優雅的東西可用。爲了說明問題,我正在尋找在每次潛在事件(已訂閱或未訂閱)的回發之後,從初始化到卸載的激發順序,以及頁面上所有控件的生成列表。

此信息:Tracing all events in VB.NET 讓我更接近一點,但是這些列表是以控件爲基礎,而不是按時間順序排列。

回答

0

那麼如果你只是想看看這些事件的總體情況以及它們以何種順序發射,check out this article。至於讓他們......好,這取決於你的意思。這可能是因爲讓他們通過反射一樣簡單:

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

我在頁面的預渲染中放棄了這個,它向我展示了15個頁面事件,這是我要去的地方,我可以通過它獲得遞歸併獲得我正在尋找的列表。 – abend 2011-04-08 17:57:07

+0

很酷,祝你好運。 – BrandonZeider 2011-04-08 17:58:25

+0

看了之後,我不確定我是否可以按時間順序獲得這些事件,您有建議嗎? – abend 2011-04-08 18:13:38

0

MSDN上ASP.NET Page Life Cycle Overview列出了所有從PreInitPage被炒到Unload事件。這些事件中的大多數都是從System.Web.UI.Control繼承的任何類別。


更新

現在,我明白你的意圖比較好,一個可能的解決辦法是遍歷每個控件的事件和分配事件處理程序,記錄事件的調用。至少有一種方法可以使用retrieve all of the event handlers assigned to an event,並且調整代碼來分配事件處理程序應該不會太困難。

+0

我熟悉ol標準事件。我認爲很多.net是事件管理,我認爲會有一個工具,可以讓你按需列出這個列表... – abend 2011-04-08 18:08:37

1

在頁面屬性中啓用跟蹤<%@ Page Trace =「true」%>。應該按順序顯示生命週期事件。

+0

這給出了一個頁面級別列表(約20個事件),同樣,我正在尋找所有控件的實際列表訂閱/未訂閱事件,以完成一次完整的往返回發。 – abend 2011-04-08 20:23:43