对于服务器端的控件,一切都是靠submit来实现提交服务器的操作的,
对于无法象button控件那样可以自己产生提交操作的控件,比如LinkButton等,
都是通过_doPostBack(ControlId)来实现提交的。
ASP.NET会自动为页面生成下面的脚本:
代码
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
function __doPostBack(eventTarget, eventArgument) {
if(!theForm.onsubmit (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
__doPostBack带有两个参数:eventTarget和eventArgument。
eventTarget是引起回送的控件的ID,eventArgument是回调参数(与控件相关的附加数据)。这两个参数分别由隐藏的两个表单域__ EVENTTARGET和__ EVENTARGUMENT保存。
使用这两个隐藏的表单可以查找引起页面回送的控件ID和回送时的参数.
防止ASP.NET页面重复提交的一个方法如下:
Page_Load :Page.GetPostBackClientEvent(serverControl, "");
代码
<form id="form1" runat="server">
<div>
<asp:Button ID="btntest" runat="server" Text="test" OnClick="btntest_Click" />
</div>
</form>
<script>
function DisableButton(b) {
b.disabled = true;
b.value = '正在提交,请稍侯....';
__doPostBack(b.id, '');
}
</script>