是否有可能在 Page_Load 处理程序内部获取将要发生的控件事件列表?

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

有帮助吗?

解决方案

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

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

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

其他提示

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

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

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

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

Page.Request.Form["__EVENTTARGET"]

这是一个示例,我认为可以回答你的问题问题

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top