• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET事件(回传)机制

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

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

一、原始的Form表单提交

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

Html代码

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

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

Html代码

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

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 >LinkButton</a>
 
注意:<asp:Checkbox>、<asp:TextBox>等服务器控件不自动生成在客户端调用JS的__doPostBack方法

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

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

一、原始的Form表单提交

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

Html代码

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

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

Html代码

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

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 >LinkButton</a>
 
注意:<asp:Checkbox>、<asp:TextBox>等服务器控件不自动生成在客户端调用JS的__doPostBack方法

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[译]【NetCore学习笔记之AnchorTagHelper】ASP.NETCoreMVCAnchorTagHelper发布时间:2022-07-10
下一篇:
Asp.netGlobal定时执行发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap