我可以找出ASP回发会触发哪些控制事件吗?

时间:2008-10-28 12:37:14

标签: asp.net events request

是否有可能获得一个控件事件列表,这些事件会在它们发生之前触发,比如在Page_Load处理程序中?

例如,如果点击了一个按钮,我可以在调用button_click事件处理程序之前解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

不幸的是,询问__EVENTTARGET值将无法解决问题。通常,该值将为空。回发处理根据不仅仅是事件目标值(如果有的话)测试控件状态值与表单发布的值(例如文本框)之间的关系来决定是否应该引发像TextChanged之类的事件,从而做出一些关于要引发什么事件的决定

除了实际将事件处理程序连接到您希望捕获事件的所有控件之外,我认为没有任何方法可以确定它。基本上可以做一下框架所做的事情。您需要在创建控件和恢复viewstate之间但在处理发布值之前执行此操作。您可以将当前控制值(来自viewstate)与发布的值进行比较,从根本上确定触发的事件。

你的目标是什么?也许有更好的解决方案。

答案 1 :(得分:2)

你选择了一个非常棘手的问题......原因是有几种方法可以引发事件。

1)__ EVENTTARGET(如上所述) 2)如果您的按钮名称是MyButt,那么您将在查询字符串中看到“MyButt =”。 3)当每个控件(例如,一个TextBox)检查请求以查看它在ViewState中的值是否与发布时不同时,将触发“Text_Changed”。

但是,您可以使用#1和#2来检查一些地方。

答案 2 :(得分:0)

以下内容包含单击按钮时的错位ID。

Page.Request.Form["__EVENTTARGET"]

答案 3 :(得分:0)

Here is an example我相信你会回答你的问题。

另一种方法是在调试时设置一些断点。