【发布时间】:2010-06-29 00:06:29
【问题描述】:
我正在编写一些代码,通过执行与单击触发页面回发的按钮时生成的完全相同的 Web 请求来模拟回发到页面的效果。
问题是来自网络请求的响应与单击按钮时得到的响应不同。
在调查时,我发现即使在我执行 Web 请求时触发并处理了 Page_Load 事件,按钮单击的处理程序也没有被执行(这意味着事件没有被触发,或者它被触发但是未处理 - 我猜这更有可能是前一种情况)。
所以我的问题是 - ASP.NET 如何知道单击了哪个按钮,以便它可以调用适当的处理程序?
我认为这是通过使用 __EVENTTARGET 参数完成的 - 我已在 Web 请求的帖子正文中正确设置了它,但这没有任何区别。
我查看了解码后的 __VIEWSTATE 参数,但看不到任何明显的内容。
谁能提供进一步的帮助?
编辑:为了清楚起见,我不是询问如何将点击处理程序添加到 Web 应用程序。
相反,我正在查看一个已经具有按钮单击事件处理程序的应用程序,并且我想知道 asp.net 如何从传入的 Web 请求中计算出哪个按钮单击事件处理程序代码调用。
【问题讨论】:
-
您能否详细说明您是如何进行网络请求的?使用 C# 代码或 jquery 或 javascript?您是否将 _Viewstate 与 Web 请求一起传递?你看到了什么错误?
-
我正在使用 C#。我正在做的是向页面发出初始请求,并在响应中取回 __VIEWSTATE 元素。然后在我为模仿回发而生成的 Web 请求中,我传递了这个 __VIEWSTATE 的值。我没有看到错误 - 我所看到的只是当我在服务器代码上放置断点时,没有调用处理服务器上按钮单击的代码。