asp.net常规页生命周期阶段列表和事件列表

简介:
当我们使用asp.net开发网站,每运行一个页面,这个页面都将经历一个生命周期。了解页的生命周期非常重要,因为这样我们才能在合适的生命周期编写代码实现预期效果。网上有一句话概括非常精辟:"Do the right thing at the right time in the right place."。微软的文档给出的ASP.NET生命周期如下:
复制代码
1  Page Request  --页面请求
2  Start  --开始
3  Page Initialization --页初始化
4  Load  --加载
5  Validation --验证
6  Postback event handling --回发事件处理
7  Rendering --呈现
8  Unload  --卸载
复制代码
一、生命周期阶段列表
下面来看看每个阶段对应的具体说明:
1、页请求
页请求发生在页生命周期开始之前。用户请求页时,asp.net将确定是否需要分析和编译页,或者是否可以在不运行页的情况下,发送缓存版本以进行响应。
2、开始
在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置ispostback属性。此外,在开始阶段期间,将设置页的UICulture属性。
3、页初始化
该阶段,可以使用页中的控件,并将设置每个控件的UniqueID属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。
4、加载
该阶段,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
5、验证
在验证期间,将调用所有验证控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。
6、回发事件处理
如果请求是回发事件,则将调用所有事件处理程序。
7、呈现
在呈现期间,视图状态将被保存到页,然后页将调用每个控件,以将其呈现的输出提供给页的Response属性的OutPutStream。
8、卸载
完全呈现页将页发送至客户端并准备丢弃时,将调用卸载。此时,将卸载页属性如Request,Response等,并进行清理。
二、生命周期事件列表(常见)
1、Page_PreInit
典型应用:
  使用IsPostBack属性确定是否是第一次处理该页;
  创建或者重新创建动态控件;
  动态设置母版页;
  动态设置Theme属性;
  读取或者设置配置文件属性值。
注意:如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则值可能会在下一阶段被改写。
2、Page_Init
典型应用:
  读取或初始化控件属性
3、Page_Load
典型应用:
  读取或更新控件属性
4、Controlevents
典型应用:
  执行特定于应用程序的处理:
        如果页包含验证程序控件,则在执行任何处理之前坚持页和各个验证控件的IsValid属性;
        处理特定事件,如Button的Click事件
5、Page_PreRender
典型应用:
  对页的内容进行最后更改
6、Page_Unload
典型应用:
  执行最后的清理工作,可能包括:
        关闭打开的文件和数据库连接;
        完成日志记录或其它特定于请求的任务。
  这个事件里要 注意:因为在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法如Response.Write方法,则该页会引发异常。
好了,最后来一个经典的代码实例来回顾一下前面讲的主要内容。Code is cheap。看代码了:
Code




本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/03/29/1423970.html,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
131 0
|
开发框架 NoSQL .NET
ASP.NET Core微服务(六)——【redis命令详细列表3】
ASP.NET Core微服务(六)——【redis命令详细列表3】
248 0
ASP.NET Core微服务(六)——【redis命令详细列表3】
|
开发框架 NoSQL .NET
ASP.NET Core微服务(六)——【redis命令详细列表2】
ASP.NET Core微服务(六)——【redis命令详细列表2】
161 0
ASP.NET Core微服务(六)——【redis命令详细列表2】
|
开发框架 NoSQL .NET
ASP.NET Core微服务(六)——【redis命令详细列表1】
ASP.NET Core微服务(六)——【redis命令详细列表1】
216 0
ASP.NET Core微服务(六)——【redis命令详细列表1】
|
.NET API 开发框架
ASP.NET Core中实现单体程序的事件发布/订阅
ASP.NET Core中实现单体程序的事件发布/订阅 背景# 事件发布/订阅是一种非常强大的模式,它可以帮助业务组件间实现完全解耦,不同的业务组件只依赖事件,只关注哪些事件是需要自己处理的,而不用关注谁来处理自己发布事件,事件追溯(Event Sourcing)也是基于事件发布/订阅的。
1610 0
|
前端开发 .NET C#
学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
原文:学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体  学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面   本篇文章介绍上一篇文章中创建的书籍信息管理系统中增删改查的四个Razor模板页面。
1288 0
|
Web App开发 .NET
学习ASP.NET Core Razor 编程系列七——修改列表页面
原文:学习ASP.NET Core Razor 编程系列七——修改列表页面  学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.
1221 0
|
前端开发 .NET 开发框架
ASP.NET Core 2 学习笔记(二)生命周期
原文:ASP.NET Core 2 学习笔记(二)生命周期 要了解程序的运行原理,就要先知道程序的进入点及生命周期。以往ASP.NET MVC的启动方式,是继承 HttpApplication 作为网站开始的进入点,而ASP.NET Core 改变了网站的启动方式,变得比较像是 Console Application。
1126 0
|
前端开发 .NET 数据库
Asp.net MVC 仿照博客园的简单网站首页 列表设计
本来我打算采用ajax提交请求,异步的请求获取数据,但是我发现如果这样的话就会拖慢开发的进度,拖长时间。所以在这篇博客中仿照首页的列表设计其实和左侧列表网站分类采用了同样的方式,通过局部视图的方式呈现。
1912 0
|
4月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
58 7