asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
2008-06-10 17:32
936 查看
网页的生命周期列表:
PreInit (2.0)
->初始化Theme,应用MasterPage和控件Skin
->Init
->InitComplete (2.0)
->If PostBack,创建子控件并加载控件/视图状态
->PreLoad (2.0)
->Load
->If PostBack,则触发服务器端事件
->LoadComplete (2.0)
->If not PostBack,则创建子控件
->PreRender
->PreRenderComplete (2.0)
->保存控件/视图状态
->SaveStateComplete (2.0)
->Render
->Unload
需要注意的是上图中标注(2.0)的事件即ASP.NET 2.0中新增的事件都仅仅是Page类中可以使用,并不是像其他事件一样可以在控件中使用。
ASP.NET 2.0中可以通过启用(默认值为True)AutoEventWireUp为网页事件创建事件处理程序,并使用隐式为事件处理程序注册的方法名。
以下是VS2005隐式为各个事件添加关联的方法:
事件 -> 方法名
Page.PreInit -> Page_PreInit
Control.Init -> Page_Init
Page.InitComplete -> Page_InitComplete
Page.PreLoad -> Page_PreLoad
Control.Load -> Page_Load
Page.LoadComplete -> Page_LoadComplete
Control.PreRender -> Page_PreRender
Control.DataBinding -> Page_DataBind
Page.PreRenderComplete -> Page_PreRenderComplete
Page.SaveStateComplete -> Page_SaveStateComplete
Control.Unload -> Page_Unload
TemplateControl.Error -> Page_Error
TemplateControl.AbortTransation -> Page_AbortTransation
TemplateControl.AbortTransation -> OnTransationAbort
TemplateControl.CommitTransation -> Page_CommitTransation
TemplateControl.CommitTransation -> OnTransationCommit
Page基类会在请求的开头阶段调用基类TemplateControl的HookUpAutomaticHandlers方法。该方法遍历上表中所示的方法名,并使用反射在程序员的类中查找具有相同名称和合适特征标的方法。如果找到合适的方法,则创建一个类型合适的委托,并使用该方法初始化它,并将其加入委托列表,该委托在相应事件发生时候将被触发。
这些事件都是由基类Page的一个虚方法或者Page类从基类Control继承的虚方法触发。所以可以有三种方法注册这些事件:(以Load事件为例)
1、显式的将一个委托和一个事件关联起来(通常都是在网页的Init处理程序中)
2、编写一个名为Page_Load的方法,并使其特征标和事件相同
3、重写Override虚方法Onload
这个三个方法中重写Override比较快一点点,但是VS2005默认是第二种。
http://kenblove.cnblogs.com/
PreInit (2.0)
->初始化Theme,应用MasterPage和控件Skin
->Init
->InitComplete (2.0)
->If PostBack,创建子控件并加载控件/视图状态
->PreLoad (2.0)
->Load
->If PostBack,则触发服务器端事件
->LoadComplete (2.0)
->If not PostBack,则创建子控件
->PreRender
->PreRenderComplete (2.0)
->保存控件/视图状态
->SaveStateComplete (2.0)
->Render
->Unload
需要注意的是上图中标注(2.0)的事件即ASP.NET 2.0中新增的事件都仅仅是Page类中可以使用,并不是像其他事件一样可以在控件中使用。
ASP.NET 2.0中可以通过启用(默认值为True)AutoEventWireUp为网页事件创建事件处理程序,并使用隐式为事件处理程序注册的方法名。
以下是VS2005隐式为各个事件添加关联的方法:
事件 -> 方法名
Page.PreInit -> Page_PreInit
Control.Init -> Page_Init
Page.InitComplete -> Page_InitComplete
Page.PreLoad -> Page_PreLoad
Control.Load -> Page_Load
Page.LoadComplete -> Page_LoadComplete
Control.PreRender -> Page_PreRender
Control.DataBinding -> Page_DataBind
Page.PreRenderComplete -> Page_PreRenderComplete
Page.SaveStateComplete -> Page_SaveStateComplete
Control.Unload -> Page_Unload
TemplateControl.Error -> Page_Error
TemplateControl.AbortTransation -> Page_AbortTransation
TemplateControl.AbortTransation -> OnTransationAbort
TemplateControl.CommitTransation -> Page_CommitTransation
TemplateControl.CommitTransation -> OnTransationCommit
Page基类会在请求的开头阶段调用基类TemplateControl的HookUpAutomaticHandlers方法。该方法遍历上表中所示的方法名,并使用反射在程序员的类中查找具有相同名称和合适特征标的方法。如果找到合适的方法,则创建一个类型合适的委托,并使用该方法初始化它,并将其加入委托列表,该委托在相应事件发生时候将被触发。
这些事件都是由基类Page的一个虚方法或者Page类从基类Control继承的虚方法触发。所以可以有三种方法注册这些事件:(以Load事件为例)
1、显式的将一个委托和一个事件关联起来(通常都是在网页的Init处理程序中)
2、编写一个名为Page_Load的方法,并使其特征标和事件相同
3、重写Override虚方法Onload
这个三个方法中重写Override比较快一点点,但是VS2005默认是第二种。
http://kenblove.cnblogs.com/
相关文章推荐
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
- Page_Load Page_Init方法使用原理 Page 添加 事件
- Page_Load Page_Init方法使用原理(转)
- Page_Load Page_Init方法使用原理
- ASP.NET 2.0 页(Page)生命周期概述
- ASP.NET 2.0 页(Page)生命周期概述
- ASP.NET 2.0 page lifecyle(页面生命周期)
- ASP.NET中的Page_Load函数理解——附带Page.IsPostBack的简单使用
- asp.net 2.0 使用log4net的方法(access数据库保存)
- ASP.NET使用EF时的seed方法以及初始数据的构造
- ASP.NET Core2.0 使用VSCode 版本1.13.1工具 开发控制台运行出现中文乱码问题及解决方法
- ASP.NET AJAX 以及AJAXPRO使用客户端调用服务器端的方法--初学者学习
- ASP.NET 2.0中的数据库链接字符串的使用方法
- asp.net 2.0里也可以用JSON的使用方法
- asp.net关于Page_Load方法和执行js脚本顺序的不同所带来的问题
- 在ASP.NET 4.0中使用.NET 2.0的请求验证行为方法(转)
- 如何让ASP.NET页面执行两次Page_Load方法
- asp.net (2.0)使用fckeditor 方法详解(多图文档)
- Lucene.net 原理介绍以及使用方法
- ASP.NET中基类Page_Load方法后执行原因分析