gpt4 book ai didi

asp.net - asp.net 页面如何知道哪个按钮触发了回发?

转载 作者:行者123 更新时间:2023-12-04 17:58:47 26 4
gpt4 key购买 nike

我正在编写一些代码,通过执行与单击触发页面回发的按钮时生成的完全相同的 Web 请求来模拟对页面进行回发的效果。

问题是来自 Web 请求的响应与单击按钮时得到的响应不同。

在调查时,我发现即使 Page_Load 事件在我执行 Web 请求时被触发和处理,按钮单击的处理程序也没有被执行(意味着事件没有被触发,或者它被触发但没有被处理 -我猜更可能是前一种情况)。

所以我的问题是 - ASP.NET 如何知道单击了哪个按钮以便它可以调用适当的处理程序?

我认为这是通过使用 __EVENTTARGET 参数完成的 - 我已经在 Web 请求的帖子正文中正确设置了它,但这没有区别。

我查看了解码后的 __VIEWSTATE 参数,但在那里我看不到任何明显的东西。

任何人都可以提供任何进一步的帮助吗?

编辑:为了清楚起见,我是 不是 询问如何向 Web 应用程序添加点击处理程序。

相反,我正在查看 的应用程序已经有一个按钮单击事件处理程序,我想知道 asp.net 如何从传入的 Web 请求中找出要调用的按钮单击事件处理程序代码。

最佳答案

首先,一个 ASP.NET 按钮 <asp:button>呈现为 <input type="submit" runat="server"...>表单上的元素。关于回发,与其他控件相比,此按钮的行为有所不同。

点击时 <input type="submit"...>将自动触发回发 没有 ASP.NET 的帮助 (在 .htm 中尝试)。您可以通过查看 POST 正文的参数来确定单击了哪个按钮。按钮名称及其值(文本属性)将作为参数发送。 __EVENTTARGET 不在图片中,应该为空。此外,根据规范(单击的那个),在参数列表中将只有一个按钮控件。所以现在你知道哪个按钮被点击了。

那么__EVENTTARGET有什么用呢?

其他控件,如 <asp:DropDownList>呈现为 SELECT , 单击时不触发回发,而只是引发 onChange javascript 事件。如果您想通过 SelectedIndexChanged 在服务器端处理事件事件,ASP.NET 将不得不为您做一些额外的工作。如果为 DropDownList 设置 AutoPostBack = True,ASP.NET 将捕获原始的 onChange JS 事件并连接一个自定义的 __doPostBack JS 函数,该函数负责填充 __EVENTTARGET 和 明确提交表格。您现在可以通过检查 __EVENTTARGET 来确定触发回发的控件。

希望这个对你有帮助 !

关于asp.net - asp.net 页面如何知道哪个按钮触发了回发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com