aspx页面与服务器控件间运行原理
一、进入服务器控件以及aspx页面前,必须的准备:
a)在WebForm 中只要带有runat="server" 那么那就是一个控件。
b)如果form有runat="server"那么将来form的提交方式是post
c)所有的asp:Button将来在编译之后都会成submit按钮
d)页面如果没有指定提交的路径,那么默认情况下会自动生成Action属性,属性的值就是当前页面
e)回发请求:默认是post请求,请求的必须是当前页面,前且必须要是服务器控件
f)IsPostBack: 判断是第一次请求(false)还是回发请求(true)。
g)__VIEWSTATE:表单的隐藏域(只有在回发请求才会提交)。
二、当前台aspx页面使用服务器控件开发时:
a)浏览器第一次请求服务器时,
1,当浏览器第一次请求服务器时,在管道事件的第八个事件中创建被请求页面的对象。
2,在第十一,十二个事件中执行的页面生命周期,并执行了方法_BuilderControTree(),
内部就是将整个页面控件树的结构创建好,再继续执行页面生命周期,执行Page_Load() 方法,
并将 前台页面控件的数据以及后台页面Paga_Load()动态绑定的数据,保存当前的页面状态到 ViewState中。
3,根据上下文对象中的Repsonse属性生成响应报文字符串发回给浏览器。
b)当浏览器第二次请求服务器时,
1, 在管道事件的第八个事件中创建被请求页面的对象。
2, 第二次请求服务器时,因为是回传事件,所以除了创建页面控件树的结构,还要解析隐藏域中的
__VIEWSTATE数据, 执行ProcessPostData事件,将 __VIEWSTATE数据赋值到控件上去。
3,继续执行页面生命周期,执行Page_Load() 方法
4,再次执行ProcessPostData事件,将要触发改变事件的控件在一次放到集合中去。
5,保存当前页面控件的状态到__VIEWSTATE中。
总结: 可以看到当浏览器第二次请求页面时(回发请求),与第一次主要的不同是在页面生命周期的一些对象中的一些事件执行的不同,
比如(ProcessPostData事件)。
这样一来前台页面上就可以通过__VIEWSTATE 来一直保持数据,就算点击了提交,
服务器控件上的数据也不会消失(有点像Winfrom的开发)。
最后补上一幅管道事件与页面生命周期的图:

aspx页面与服务器控件间运行原理的更多相关文章
- ASP.NT运行原理和页面生命周期详解及其应用
ASP.NT运行原理和页面生命周期详解及其应用 1. 下面是我画的一张关于asp.net运行原理和页面生命周期的一张详解图.如果你对具体不太了解,请参照博客园其他帖子.在这里我主要讲解它的实际应用. ...
- ASP.NET的运行原理与运行机制 如何:为 IIS 7.0 配置 <system.webServer> 节
https://technet.microsoft.com/zh-cn/sysinternals/bb763179.aspx 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的 ...
- Asp.Net应用运行原理
一.运行原理图 二.对于HttpModule和HttpHandler的概念可能还不是很清楚,请先看Asp.Net应用生命周期.RAR 或者 Asp.Net深入解析 第四章,流程图太大无法粘贴 三.传智 ...
- ASP.NET运行原理_2
当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模 ...
- Aspx 页面生命周期
ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件处理程序代码以及进行 呈现.了解页的生命周期非常重要,这样就 ...
- struts1,struts2,hibernate,spring的运行原理结构图
一.struts1运行原理 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...
- iBatis.Net的基本情况和运行原理
转载http://www.cnblogs.com/13590/archive/2013/02/27/2934580.html 摘要:介绍iBatis.Net的基本情况和运行原理,运行环境中各参数的配置 ...
- asp.net运行原理及机制
当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模 ...
- iis6.0与asp.net的运行原理
这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...
随机推荐
- Codeforces 611d [DP][字符串]
/* 题意:给一个长度不超过5000的字符串,每个字符都是0到9的数字. 要求将整个字符串划分成严格递增的几个数字,并且不允许前导零. 思路: 1.很开心得发现,当我在前i个区间以后再加一个区间的时候 ...
- mac下配置eclipse的hadoop环境
下载eclipse-jee-mars-1-macosx-cocoa-x86_64.tar 右键显示包内容,将hadoop-eclipse-plugin-2.6.0.jar拷入到刚显示的包的plugin ...
- (转).NET代码混淆实践
今天突然对反编译.混淆感兴趣,在网上查了一些资料,文章大部分内容来源http://www.cnblogs.com/hsapphire/archive/2010/11/21/1883514.html. ...
- framMaker、Velocity模版引擎
1.一种模板文件,可以自动加载数据到模板里面展现. 类似:Velocity 2.使用场景 1.web开发模式 WEB-INF/view/vm 在互联网公司的开发都是基于vm的开发,其次就是使用JS的框 ...
- Redis应用
一.什么是Redis? Redis是一个高性能的key-value内存数据库. 二.为什么使用Redis? Redis是NoSQL数据库,相比传统关系型数据库,内存数据库读写更快. 三.Redis怎么 ...
- OC基础(2)
类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 *:first-child { margin-top: 0 !important; } body > *:last-c ...
- fill的用法
for(int i=0;i<=10;i++) num[i]=i ; fill(num+1,num+1+5,2) ; for(int i=0;i<=10;i++) printf(" ...
- excel中 lookup的使用
问题来源: 有一批数据要处理,excel格式,第一个表是 名字,第二个是“姓名”和“顾问”, 每一列执行以下操作,从名字列找到名字,然后在第二个表中找到该姓名对应的“顾问”,粘贴到 第一个表名字的后面 ...
- DP最长递增字符串
对于最简单DP问题,比如7 9 1 10 3中最长的递增字符串就是7 9 10,所以长度是3. 对于这个问题,就是从第二个开始,让后面的每一个字符都假设作为咱们要找的最长的字符串的最后一个字符,然后从 ...
- 【Unity Shaders】学习笔记——SurfaceShader(五)让纹理动起来
[Unity Shaders]学习笔记——SurfaceShader(五)让纹理动起来 转载请注明出处:http://www.cnblogs.com/-867259206/p/5611222.html ...