您的位置:首页 > 编程语言 > ASP

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个部分 如图:



注意 :大部分的开发者直接使用
page_load
方法的一切,这不是一个好的做法。例如 填充控件,设置视图状态,应用主题等,这些都是发生在页面上的负荷。因此,我们可以在适当的事件,添加适当的逻辑,这将真正使你的代码整洁 符合逻辑。

序号事件 控件初始化状态 是否
可用
表单数据是否
可用
什么逻辑可以写在这里?
1InitNoNoNoOnInit 方法执行创建 Page 实例所需的初始化和设置步骤。在页生命周期的此阶段中,页中声明的服务器控件都已初始化为默认状态;但每个控件的视图状态尚未填充。在 Page_Init 阶段中,页中的控件不能访问该页的其他服务器控件,无论其他控件是子控件还是父控件。不一定会创建其他服务器控件,也不一定能够访问它们。

2 Load view stateNot guaranteedYesNot guaranteed您可以访问视图状态和任何同步逻辑
3PostBackdataNot guaranteedYesYes你可以访问表单数据。
4 LoadYesYesYes绑定控件 等等。。。
5 ValidateYesYesYes如果你的页面有验证,或者你想为您的网页执行验证。
6EventYesYesYes如果这是通过点击一个按钮或下拉的变化,那么相对应的事件将被执行。
7 Pre-renderYesYesYes如果你想在这些控件视图状态最后保存之前修改UI对象的结构或属性值。
8Save view stateYesYesYes一旦所有服务器控件的变化完成,这一事件控制数据保存在视图状态。
9 RenderYesYesYes如果你想添加一些自定义的HTML输出。
10 UnloadYesYesYes你可以在这里做任何清理。



转自http://www.cnblogs.com/suizhouqiwei/archive/2012/08/15/2637775.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: