在Page_Load
處理程序中,是否有可能獲得將要觸發的控制事件列表?我可以找出哪些控件事件將在ASP回發中觸發?
例如,如果一個按鈕被點擊了,我可以在調用button_click
事件處理程序之前解決這個問題嗎?
在Page_Load
處理程序中,是否有可能獲得將要觸發的控制事件列表?我可以找出哪些控件事件將在ASP回發中觸發?
例如,如果一個按鈕被點擊了,我可以在調用button_click
事件處理程序之前解決這個問題嗎?
你已經選擇了一個非常棘手的問題......其原因在於有幾種方法會引發事件。 1)__EVENTTARGET(如上所述) 2)如果你的按鈕名稱是MyButt,那麼你會在查詢字符串中看到「MyButt =」。 3)當每個控件(例如TextBox)檢查請求以查看它在ViewState中的值是否與發佈時不同時,將激發「Text_Changed」。
但是,您可以使用#1和#2來檢查幾個位置。
以下內容包含點擊時按鈕的損壞標識。
Page.Request.Form["__EVENTTARGET"]
Here is an example我相信你會回答你的問題。
另一種方法是在調試時設置一些斷點。
不幸的是,詢問__EVENTTARGET值並不能解決問題。通常,這個值將是空的。回發處理根據不僅僅事件目標值(如果有的話)根據表單發佈的值(例如用於文本框)測試控制狀態值來確定是否應該提高像TextChanged這樣的事件而做出關於要引發什麼事件的一些決定。
除了實際將事件處理程序掛接到您希望捕獲事件的所有控件之外,我不認爲有任何方法可以確定它。儘管基本上可以做到框架的功能。您需要在控件創建和視圖狀態恢復之間,但在處理髮布的值之前執行此操作。您可以將當前控制值(來自視圖狀態)與發佈的值進行比較,從本質上確定哪些事件會觸發。
你的目標是什麼?也許有更好的解決方案。