asp.net页面回传与js调用服务端事件、PostBack的原理详解
ASP.ENT中,有两种实现页面PostBack的机制,不管是哪种回传方式,最终均是Form表单提交。 一、原始的Form表单提交 WebControls中的Button和ImageButton控件,到客户端会转换为
<input type="submit"name=""/>
<input type="image"name=""/>
二、利用JavaScript和隐藏表单实现表单提交 除Button和ImageButton外,其他WebControls控件均是以这种方式实现页面回传机制的。具体步骤如下: 1、如果页面中存在除Button和ImageButton外的服务端控件,ASP.NET页面框架会自动在页面中增加两个隐藏表单。
<input type="hidden"name="__EVENTTARGET"id="__EVENTTARGET"value=""/>
<input type="hidden"name="__EVENTARGUMENT"id="__EVENTARGUMENT"value=""/>
2、服务端自动生成如下的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>服务端控件为例说明,以下为服务端到客户端的映射:
<a id="LinkButton1"href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
但是,经过试验,我发现<asp:Checkbox>、<asp:TextBox>等服务端控件并不能自动在客户端生成调用JavaScrip的__doPostBack方法的代码。 4.客户端触发事件后调用__doPostBack方法,将表示触发的控件源的eventTarget 和事件参数eventArgument分别付给两个隐藏域__EVENTTARGET和__EVENTARGUMENT,然后提交Form,在服务端根据__EVENTTARGET和__EVENTARGUMENT来判断是哪个控件的什么事件触发了。
asp.net页面回传与js调用服务端事件、PostBack的原理详解相关推荐
- asp.net页面回传与js调用服务端事件、PostBack的原理详解(转)
Asp.net中服务端控件事件是如何触发的 Asp.net 中在客户端触发服务器端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type为subm ...
- asp.net页面回传与js调用服务端事件,Postback的原理
Asp.net 中在客户端触发服务器端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton 这两种 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- WCF服务端运行时架构体系详解[下篇]
作为WCF中一个核心概念,终结点在不同的语境中实际上指代不同的对象.站在服务描述的角度,我们所说的终结点实际上是指ServiceEndpoint对象.如果站在WCF服务端运行时框架来说,终结点实际上指 ...
- 页面回传与js调用服务器端事件(转)
第一章. Asp.net中服务端控件事件是如何触发的 Asp.net 中在客户端触发服务器端事件分为两种情况: 一. WebControls中的Button 和HtmlControls中的Type ...
- 服务端渲染与客户端渲染详解(vue)
1.客户端请求 (1)用户在浏览器输入请求的地址例如:172.0.0.1:8080 到服务器 服务器接受到客户端的请求拿到一个没有被数据渲染的空页面 (2)客户端拿到服务端的空字符串页面,然后从上往下 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)
一.序言 Hadoop是一个技术生态圈,zookeeper是hadoop生态圈里一个非常重要的技术,当我研究学习hadoop的相关技术时候,有两块知识曾经让我十分的困惑,一个是hbase,一个就是zo ...
- cordova监听事件中调用其他方法_Laravel模型事件的实现原理详解
模型事件在 Laravel 的世界中,你对 Eloquent 大多数操作都会或多或少的触发一些模型事件,下面这篇文章主要给大家介绍了关于Laravel模型事件的实现原理,文中通过示例代码介绍的非常详细 ...
- 微服务注册中心 Nacos 实现原理详解!
Nacos 架构 Provider APP:服务提供者 Consumer APP:服务消费者 Name Server:通过VIP(Virtual IP)或DNS的方式实现Nacos高可用集群的服务路由 ...
最新文章
- python运行不了control+shift+i_Python不支持 i ++ 语法的原因解析
- 5.基于STM32F103+OV7670的网络摄像头
- 分布式WebSocket架构
- XMLHTTP使用具体解释
- aopaspect区别_面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?
- wamp2.2-64位 localhost和localhost/phpmyadmin不能访问问题解决
- 【转载】用JS控制输入内容
- 前端学习(2942):vue的本地注册
- php有哪些_php工作原理是什么?php常用功能有哪些?
- 计算机硬件技术基础第四章ppt,管理N计算机硬件技术基础第4章.ppt
- React 事件总结
- 利用EA根据sql脚本生成数据库文档
- scala案例_Scala案例类和案例对象深入(第2部分)
- 【光学】基于matlab涡旋光与球面波的干涉【含Matlab源码 597期】
- WINCCV7.5入门指南学习简介
- IDEA 远程调试war包
- python实现汉诺塔递归算法超详细过程
- 边缘计算是什么,对企业有什么影响?
- 华为静态,动态NAT,Easy IP实验!超详细,有手就能学会
- 2019山东省赛总结
热门文章
- 【Android 逆向】IDA 工具使用 ( 交叉引用数量设置 | 调试设置 )
- 【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )
- 【Android 电量优化】电量优化 ( 网络状态获取 | 主动获取 WIFI 状态 | 被动获取 WIFI 状态 )
- 【BZOJ4764】弹飞大爷 LCT
- Python3 之 JSON
- tomcat session 共享
- 问候Maven3(笔记一)
- [iOS]关于零基础学习iOS开发的学习方法总结
- LBWE 和SBIW的关系
- 《Essential ASP.NET 2.0中文版》