ASP.NET应用程序与页面生命周期
2016-05-11 10:19
357 查看
在本文中,我们将了解不同的事件,ASP.NET 应用程序的生命周期以浏览器向 Web 服务器(对于 ASP.NET 应用程序,通常为 IIS)发送请求为起点,直至将请求结果返回至浏览器结束。在这个过程中,首先我们需要了解ASP.NET请求的2个大致的步骤。其次我们将详细了解 'httphandler ',' httpmodule和 asp.net 页面对象(Page)中不同的事件的执行顺序,逻辑。
二个步骤的过程:
asp.net请求处理,2步的过程如下所示,用户发送一个请求到IIS 服务器:
1、asp.net创建一个运行时,可以处理请求。换句话说,它创建应用程序对象,请求,响应和上下文对象处理请求。
2、运行时一旦被创建,请求处理,通过一系列的事件处理模块,Handler处理和页面对象。简称MHPM (Module, handler, page and Module event)。
HttpModules配置
页面第一次加载效果:
点击button按钮后:
HttpModule
HttpModule通过在某些事件中注册,把自己插入ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对相应的HTTP模块,这样该模块就能处理请求了。
常用操作:
1、向每个页面动态添加一些备注或说明性的文字:
2、判断用户登录
如果定义了多个HttpModule,在web.config文件中引入自定义HttpModule的顺序就决定了多个自定义HttpModule在处理一个HTTP请求的接管顺序。
HttpHandler
HttpHandler是HTTP请求的处理中心,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。
HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。
为了验证请求是否进入HttpHandler ,我们可以在WebConfig中 加入:
<add verb="*" path="*.aspx" type="WebDemo1.Common.clsHttpHandler,WebDemo1"/>
调试程序看看。
综上我们可以总计出一张图:
ASP.NET页面事件
在上面的部分,我们已经看到了一个ASP.NET页面完整的请求事件。 最重要的部分之一,是ASP.NET页面,我们没有详细讨论相同。我们详细讨论下ASP.NET的页面事件。任何ASP.NET页面中有2个部分 如图:
注意 :大部分的开发者直接使用
转自http://www.cnblogs.com/suizhouqiwei/archive/2012/08/15/2637775.html
二个步骤的过程:
asp.net请求处理,2步的过程如下所示,用户发送一个请求到IIS 服务器:
1、asp.net创建一个运行时,可以处理请求。换句话说,它创建应用程序对象,请求,响应和上下文对象处理请求。
2、运行时一旦被创建,请求处理,通过一系列的事件处理模块,Handler处理和页面对象。简称MHPM (Module, handler, page and Module event)。
HttpModules配置
页面第一次加载效果:
点击button按钮后:
HttpModule
HttpModule通过在某些事件中注册,把自己插入ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对相应的HTTP模块,这样该模块就能处理请求了。
常用操作:
1、向每个页面动态添加一些备注或说明性的文字:
2、判断用户登录
如果定义了多个HttpModule,在web.config文件中引入自定义HttpModule的顺序就决定了多个自定义HttpModule在处理一个HTTP请求的接管顺序。
HttpHandler
HttpHandler是HTTP请求的处理中心,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。
HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。
为了验证请求是否进入HttpHandler ,我们可以在WebConfig中 加入:
<add verb="*" path="*.aspx" type="WebDemo1.Common.clsHttpHandler,WebDemo1"/>
调试程序看看。
综上我们可以总计出一张图:
ASP.NET页面事件
在上面的部分,我们已经看到了一个ASP.NET页面完整的请求事件。 最重要的部分之一,是ASP.NET页面,我们没有详细讨论相同。我们详细讨论下ASP.NET的页面事件。任何ASP.NET页面中有2个部分 如图:
注意 :大部分的开发者直接使用
page_load方法的一切,这不是一个好的做法。例如 填充控件,设置视图状态,应用主题等,这些都是发生在页面上的负荷。因此,我们可以在适当的事件,添加适当的逻辑,这将真正使你的代码整洁 符合逻辑。
序号 | 事件 | 控件初始化 | 状态 是否 可用 | 表单数据是否 可用 | 什么逻辑可以写在这里? |
1 | Init | No | No | No | OnInit 方法执行创建 Page 实例所需的初始化和设置步骤。在页生命周期的此阶段中,页中声明的服务器控件都已初始化为默认状态;但每个控件的视图状态尚未填充。在 Page_Init 阶段中,页中的控件不能访问该页的其他服务器控件,无论其他控件是子控件还是父控件。不一定会创建其他服务器控件,也不一定能够访问它们。 |
2 | Load view state | Not guaranteed | Yes | Not guaranteed | 您可以访问视图状态和任何同步逻辑 |
3 | PostBackdata | Not guaranteed | Yes | Yes | 你可以访问表单数据。 |
4 | Load | Yes | Yes | Yes | 绑定控件 等等。。。 |
5 | Validate | Yes | Yes | Yes | 如果你的页面有验证,或者你想为您的网页执行验证。 |
6 | Event | Yes | Yes | Yes | 如果这是通过点击一个按钮或下拉的变化,那么相对应的事件将被执行。 |
7 | Pre-render | Yes | Yes | Yes | 如果你想在这些控件视图状态最后保存之前修改UI对象的结构或属性值。 |
8 | Save view state | Yes | Yes | Yes | 一旦所有服务器控件的变化完成,这一事件控制数据保存在视图状态。 |
9 | Render | Yes | Yes | Yes | 如果你想添加一些自定义的HTML输出。 |
10 | Unload | Yes | Yes | Yes | 你可以在这里做任何清理。 |
转自http://www.cnblogs.com/suizhouqiwei/archive/2012/08/15/2637775.html
相关文章推荐
- 菜刀ASP 复制粘贴文件抓包
- ASP.NET存储过程实现分页效果(三层架构)
- asp.net MVC _LayOut布局以及用户控件的使用
- asp.net WebForm之用户自定义控件
- ASP.NET存储过程实现分页效果(三层架构)
- ASP.NET中RadioButtonList绑定后台数据后触发点击事件
- 详解ASP.NET中Session的用法
- 详解ASP.NET验证码的生成方法
- ASP.NET三层架构详解 如何实现三层架构
- APS.NET_MVC5学习笔记-给数据模型添加校验器
- APS.NET_MVC5学习笔记-给电影表和模型添加新字段
- APS.NET_MVC5学习笔记-验证编辑方法(Edit method)和编辑视图(Edit view)
- APS.NET_MVC5学习笔记-从控制器访问数据模型
- APS.NET_MVC5学习笔记 - 添加一个模型
- APS.NET_MVC5学习笔记 - 将数据从控制器传递给视图
- APS.NET_MVC5学习笔记-视图
- APS.NET_MVC5学习笔记 - 控制器
- Raspi-config 设置解析
- Asp.net中的认证与授权
- asp.net DataTable的常用操作