ASP.NET 如何知道点击了哪个按钮以引发其事件

Tho*_*mas 5 asp.net webforms

使用 a 时,LinkButtondoPostBack()函数在页面中呈现,当单击按钮时,doPostBack()在客户端调用将表单提交给服务器,并在两个名为EVENTTARGET和 的隐藏字段中发送信息EVENTARGUMENT。在EVENTTARGET拥有这引起回发和控件名称EVENTARGUMENT持有任何信息。

使用这个 ASP.NET 引擎从EVENTTARGET导致回发的参数中获取控件名称,并调用RaisePostBackEvent()事件来调用正确的服务器端事件处理程序。我了解如何doPostBack()工作以及如何调用服务器端事件处理程序。

但是,对于普通的服务器按钮,如何在服务器端调用正确的按钮单击?ASP.NET 如何通知客户端单击的控件名称?

Joã*_*elo 5

普通的 ASP.NETButton呈现为<input type="submit">具有唯一name属性的 HTML 元素。默认情况下,此 HTML 元素将触发与当前 ASPX 页面关联的HTML 表单的 HTTP POST 。

当 HTTP POST 发生时,会根据表单内成功的控件构建一系列控件名称/当前值对(称为表单数据集),例如文本框中的文本值会这样传输。与触发提交的按钮名称对也会发送到服务器,这就是 ASP.NET 知道哪个按钮触发了 HTTP POST 的方式。

HTML 规范保证只有表单内的成功控件才会被考虑用于发布的表单数据集,并且因为成功控件的定义包含以下规则:

如果一张表单包含多个提交按钮,则只有激活的提交按钮才成功。

然后 ASP.NET 可以检查发布的表单数据集,以检查是否触发了任何正常按钮。