5

使用 a 时LinkButton,该doPostBack()功能会在页面中呈现,并且当单击按钮时,doPostBack()在客户端将表单提交到服务器并在两个隐藏字段中发送信息,称为EVENTTARGETEVENTARGUMENTEVENTTARGET保存导致回发的控件名称并保存EVENTARGUMENT任何信息。

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

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

4

2 回答 2

4

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

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

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

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

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

于 2012-05-17T14:28:08.847 回答
0

一般来说,您永远不必担心按钮单击的内部结构。这就是 .Net 的美妙之处。

但是,要具体了解客户端调用的内容,您可以简单地查看页面的源代码并查看按钮调用的内容。

例子:

<input name="ctl00$MainContent$btnMyButton" id="ctl00_MainContent_btnMyButton" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnMyButton", "", true, "", "", false, false))" type="submit" value="My Button"/>

观察 .Net 注入以下 javascript 例程:

WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnMyButton", "", true, "", "", false, false))
于 2012-05-17T14:27:56.307 回答