使用LinkButton
时,页面中会显示doPostBack()
函数,单击按钮时会在客户端调用doPostBack()
将表单提交给服务器并发送信息两个名为EVENTTARGET
和EVENTARGUMENT
的隐藏字段。 EVENTTARGET
保存导致回发的控件名称,EVENTARGUMENT
保存任何信息。
使用此ASP.NET引擎从EVENTTARGET
参数获取控件名称,该名称导致回发并调用RaisePostBackEvent()
事件来调用正确的服务器端事件处理程序。我理解doPostBack()
如何工作以及如何调用服务器端事件处理程序。
但是对于普通的服务器按钮,如何在服务器端点击正确的按钮?如何在单击客户端的控件名称上通知ASP.NET?
答案 0 :(得分:4)
普通的ASP.NET Button
呈现为具有唯一<input type="submit">
属性的HTML name
元素。默认情况下,此HTML元素将触发与当前ASPX页面关联的HTTP POST to the HTML form。
当HTTP POST发生时,一系列控制名称/当前值对(称为表单数据集)是从表单内的successful controls构造的,例如文本框内的文本值被传输像这样。一个带有触发提交的按钮名称的对也被发送到服务器,这就是ASP.NET知道哪个按钮触发HTTP POST的方式。
HTML规范保证只对表单中的成功控件考虑发布的表单数据集,并且因为成功控件的定义包含以下规则:
如果表单包含多个提交按钮,则仅激活 提交按钮成功。
然后ASP.NET可以检查发布的表单数据集,以检查是否触发了任何正常按钮。
答案 1 :(得分: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))