ASP.NET 事件(回传)机制

本文介绍了ASP.NET中两种实现页面PostBack的方式:原始Form表单提交及利用JavaScript和隐藏表单实现表单提交的方法。详细解释了这两种机制的工作原理,并通过实例展示了如何使用这些机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP.NET 事件(回传)机制  

2012-06-26 03:26:17|  分类: .net编程 |  标签: |举报 |字号 订阅

摘要:
ASP.NET中,有两种实现页面PostBack的机制,不管是哪种回传方式,最终均是Form表单提交。

一、原始的Form表单提交

WebControls中的Button和ImageButton控件,到客户端会转换为

Html代码

1
2
<input type= "submit" name= "" />
<input type= "image" name= "" />
二、利用JavaScript和隐藏表单实现表单提交


除Button和ImageButton外,其他WebControls控件均是以这种方式实现页面回传机制的。具体步骤如下:
1、如果页面中存在除Button和ImageButton外的服务端控件,ASP.NET页面框架会自动在页面中增加两个隐藏表单。

Html代码

<input type= "hidden" name= "__EVENTTARGET" id= "__EVENTTARGET" value= "" />
<input type= "hidden" name= "__EVENTARGUMENT" id= "__EVENTARGUMENT" value= "" />

2、服务端自动生成如下的JavaScript方法,处理事件的发送。

Javascript代码

<script type= "text/javascript" >  
<!--  
var theForm = document.forms[ 'form1' ];  
if (!theForm) {  
     theForm = document.form1;  
}  
function __doPostBack(eventTarget, eventArgument) {  
if (!theForm.onsubmit || (theForm.onsubmit() != false )) {  
         theForm.__EVENTTARGET.value = eventTarget;  
         theForm.__EVENTARGUMENT.value = eventArgument;  
         theForm.submit();  
     }  
}  
// -->
</script>

3、每个会引发服务端事件的控件都会在响应的客户端事件中调用上面的代码。
以<asp:LinkButton>服务端控件为例说明,以下为服务端到客户端的映射:

Html代码

<a id= "LinkButton1" href= "javascript:__doPostBack('LinkButton1','')" >LinkButton</a>

注意:<asp:Checkbox>、<asp:TextBox>等服务器控件不自动生成在客户端调用JS的__doPostBack方法


4.客户端触发事件后调用__doPostBack方法,将表示触发的控件源的eventTarget 和事件参数eventArgument分别付给两个隐藏域__EVENTTARGET和__EVENTARGUMENT,然后提交Form,在服务端根据 __EVENTTARGET和__EVENTARGUMENT来判断是哪个控件的什么事件触发了。


转自:http://www.cnblogs.com/tedyding/archive/2010/03/20/1690685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值