我可以找出哪些控件事件将在ASP回发中触发?

问题描述:

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这样的事件而做出关于要引发什么事件的一些决定。

除了实际将事件处理程序挂接到您希望捕获事件的所有控件之外,我不认为有任何方法可以确定它。尽管基本上可以做到框架的功能。您需要在控件创建和视图状态恢复之间,但在处理发布的值之前执行此操作。您可以将当前控制值(来自视图状态)与发布的值进行比较,从本质上确定哪些事件会触发。

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