ASP.NET生命周期
4652
生命周期
ASP.NET 生命周期指定如何:
- ASP.NET 处理页面生成动态输出
- 应用程序及其页面进行实例化和处理
- ASP.NET 动态编译页面
ASP.NET 生命周期可以被分为两组:
- 应用程序生命周期
- 页面生命周期
ASP.NET 应用程序生命周期
应用程序生命周期有以下阶段:
- 用户请求访问应用程序的资源,即一个页面。浏览器发送此请求到 web 服务器。
- 一个统一管道接收第一个请求,并发生以下事件:
- 一个 ApplicationManager 类的对象创建。
- 一个 HostingEnvironment 类的对象创建从而提供信息资源。
- 创建响应对象。应用程序对象如 HttpContext,HttpRequest 和 HttpResponse 被创建并初始化。
- 一个 HttpApplication 对象的实例被创建并被分配到请求。
- 请求由 HttpApplication 类所处理。不一样的事件引发此类处理请求。
ASP.NET 页面生命周期
当请求一个页面时,页面被加载到服务器内存,然后处理并送达到浏览器中。然后再从内存中卸载。在这些步骤中的每一步,方法和事件都是可用的,可以根据应用程序所需进行改写。换言之,你可以编写自己的代码从而去置换缺省代码。
页面类创建了页面上所有控件的等级树。页面上所有的组件,除了指令,其余都是控件树的一部分。你可以通过在页面指令上添加 trace = "true" 来看到控制树。我们会覆盖页面指令,然后在 'directives' 和 'event handling' 下追踪。
页面生命周期阶段为:
- 初始化
- 页面控件实例化
- 状态恢复和维护
- 事件处理代码的执行
- 页面显示
理解页面周期帮助我们编写代码从而使一些具体的事情可以在页面生命周期中任何阶段发生。它同样帮助编写自定义控件并且在合适的时间将其初始化,利用视图状态下的数据填充其属性,并且运行控件行为的代码。
以下是一个 ASP.NET 页面的不一样阶段:
- 页面请求 - 当 ASP.NET 得到一个页面请求,它决定是否解析和编译页面,或者会有一个页面的缓存版本;相应地进行回应。
- 页面生命周期的开启 - 在这个阶段,设置请求和回应对象。如果是一个旧的请求或者是回发的,页面 IsPostBack 属性设置为正确。页面 ULCulture 属性同样也被设置。
- 页面初始化 - 在此阶段,页面上的控件通过设置 UniqueID 属性被分配到独特的 ID 并应用主题。对于一个新的请求,加载回发数据并且控件属性被重新储存到视图状态下的值。
- 页面加载 - 在此阶段,设置控件属性,使用视图状态和控件状态值。
- 验证 - 调用验证控件的校验方法并成功执行,页面的 IsValid 属性设置为 true。
- 回发事件处理 - 如果请求是一个回发(旧请求),相关事件处理程序被调用。
- 页面显示 - 在此阶段,页面的视图状态和所有控件被保存。页面为每一个控件调用显示方法,并且呈现的输出被写入页面响应属性中的 OutputStream 类。
- 卸载 - 显示过的页面被送达客户端以及页面属性,例如响应和请求,被卸载并全部清除完毕。
ASP.NET 页面生命周期事件
在页面生命周期的每一阶段,页面引发一些时间,会被编码。一个事件处理程序基本上是一个函数或子程序,绑定到事件,使用声明式如 OnClick 属性或处理。
以下是页面生命周期事件:
- PreInit - PreInit 是页面生命周期的第一个事件。它检查 IsPostBack 属性并决定页面是否是回发。它设置主题及主版页,创建动态控件,并且获取和设置值配置文件属性值。此事件可通过重载 OnPreInit 方法或者创建一个 Page_PreInit 处理程序进行处置。
- Init - Init 事件初始化控件属性,并且建立控件树。此事件可通过重载 OnInit 方法或者创建一个 Page_Init处理程序进行处置。
- InitComplete - InitComplete 事件允许对视图状态的跟踪。所有的控件开启视图状态下的跟踪。
- LoadViewState - LoadViewState 事件允许加载视图状态信息到控件中。
- LoadPostData - 在此阶段期间,对所有由 \ 标签定义的输入字段的内容进行处理。
- PreLoad - PreLoad 在回发数据加载在控件中之前发生。此事件可以通过重载 OnPreLoad 方法或者创建一个 Pre_Load 处理程序进行处置。
- Load - Load 事件被页面最先引发,然后递归地引发所有子控件。控件树中的控件就被创建好了。此事件可通过重载 OnLoad 方法或者创建一个 Page_Load 处理程序来进行处置。
- LoadComplete - 加载进程完成,控件事件处理程序运行,页面验证发生。此事件可通过重载 OnLoad 方法或者创建一个 Page_LoadComplete 处理程序来进行处置。
- PreRender - PreRender 事件就在输出显示之前发生。通过处理此事件,页面和控件可以在输出显示之前执行任何更新。
- PreRenderComplete - 当 PreRender 事件为所有子控件被循环引发,此事件确保了显示前阶段的完成。
- SaveStateComplete - 页面控件状态被保存。个性化、控件状态以及视图状态信息被保存。
- UnLoad - UnLoad 阶段是页面生命周期的最后一个阶段。它为所有控件循环引发 UnLoad 事件,最后为页面自身引发。最终完成清理和释放所有资源和引用,比如数据库连接。此事件可通过调整 OnLoad 方法或者创建一个 Page_UnLoad 处理程序来进行处置。
原文链接: https://www.yukx.com/yukx/article/details/598.html 优科学习网ASP.NET生命周期
推荐文章
-
项目中,有些函数需要处理某个服务的返回结果,而在对函数单元测试的时候,又不能启动那些服务,这里就可以利用Mockito工具,其中有如下三种注解:@InjectMocks:创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。
-
雪花算法(Snowflake)是由Twitter开发的一种分布式ID生成算法,旨在为分布式系统提供一种简单而有效的方式,以生成全局唯一、有序且可排序的64位整数ID。这种ID通常用作数据库记录的主键或其他需要唯一标识符的场景。雪花算法生成的64位ID结构如下:最高位(第64位):固定为0,因为64位
-
在HTML中,如果你想让一个输入框(input元素)不可编辑,你可以通过设置其readonly属性来实现。示例如下:input type="text" value="此处内容不可编辑" readonly在上述代码中,readonly属性使得用户无法修改输入框中的内容。另外,如果你希望输入框完全不可交
-
ASP.NET教程ASP.NET又称为ASP+,基于.NETFramework的Web开发平台,是微软公司推出的新一代脚本语言。ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架。ASP.NET支持三种不一样的开发模式:WebPages(Web页面)、
-
C# 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的通常形式:判断语句C#提供了以下类型的判断语句。点击链接查看每个语句的细节。语句描述if语句一个 if语句 由一个布尔表达式后跟
-
C#循环有的时候,可能需要多次执行同一块代码。通常情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的通常形式:循环类型C#提供了以下几种循环类型
学习大纲
8.4 ASP.NET生命周期