当使用LinkButton时,doPostBack()函数在页面中呈现,当单击按钮时,在客户端调用doPostBack(),将表单提交给服务器,并在两个隐藏字段EVENTTARGET和EVENTARGUMENT中发送信息。EVENTTARGET保存导致回发的控件名称,EVENTARGUMENT保存所有信息。
使用此ASP.NET引擎从导致回发的EVENTTARGET参数中获取控件名称,并调用RaisePostBackEvent()事件来调用正确的服务器端事件处理程序。我了解doPostBack()是如何工作的,以及服务器端事件处理程序是如何调用的。
然而,对于一个普通的服务器按钮,如何调用服务器端正确的按钮点击呢?如何通知ASP.NET客户端被单击的控件名称?
发布于 2012-05-17 22:28:09
一个普通的ASP.NET Button被呈现为一个具有唯一name属性的HTML <input type="submit">元素。默认情况下,此元素将触发与当前ASPX页面相关联的HTTP POST to the HTML form。
当HTTP POST发生时,将从表单内的successful controls构造一系列控制名称/当前值对,称为表单数据集,例如,文本框内的文本值按如下方式传输。一对带有触发提交的按钮的名称也被发送到服务器,这就是ASP.NET知道哪个按钮触发了HTTP POST的方式。
HTML规范保证,对于发布的表单数据集,只考虑表单中成功的控件,因为成功控件的定义包含以下规则:
如果表单包含多个提交按钮,则只有激活的提交按钮才会成功。
然后,ASP.NET可以检查发布的表单数据集,以检查是否触发了任何正常按钮。
发布于 2012-05-17 22:27:56
一般来说,你永远不必担心点击按钮的内部细节。这就是.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))https://stackoverflow.com/questions/10637157
复制相似问题