Page_Load Page_Init方法使用原理 Page 添加 事件
2014-04-15 11:39
399 查看
网页的生命周期列表:
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
执行aspx页面中的服务端代码
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默认是第二种
------------------------------
public partial class _Default : System.Web.UI.Page
{
public _Default()
{
this.Init += new EventHandler(_Default_Init);
}
在 += 后边按 Tab 键就可以了。
-------------------------
在页面设计器右键,选择“查看组件设计器”,弹出“***.aspx.cs[设计]”这样的页面,现在再看“属性”那里,可以点击闪电符号看到Page的事件了。
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
执行aspx页面中的服务端代码
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默认是第二种
------------------------------
public partial class _Default : System.Web.UI.Page
{
public _Default()
{
this.Init += new EventHandler(_Default_Init);
}
在 += 后边按 Tab 键就可以了。
-------------------------
在页面设计器右键,选择“查看组件设计器”,弹出“***.aspx.cs[设计]”这样的页面,现在再看“属性”那里,可以点击闪电符号看到Page的事件了。
相关文章推荐
- Page_Load Page_Init方法使用原理(转)
- Page_Load Page_Init方法使用原理
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
- asp.net 2.0生命周期 以及Page_Load Page_Init方法使用原理
- .net触发事件Page_Init、Page_Load方法
- js 添加事件 attachEvent和addEventListener 使用方法
- 解决使用jQuery采用append添加的元素事件无效的方法
- delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。 使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如
- asp.net错误捕获(错误处理)page_error事件使用方法
- 解决使用jQuery采用append添加的元素事件无效的方法
- 如何使用VC++ 2005 给ActiveX控件添加方法,属性,事件
- 使用前端使用jQuery获取 在apsx页面的page_load方法直接返回json数据
- 添加Page_Init事件
- asp.net错误捕获(错误处理)page_error事件使用方法
- 数组练习:各种数组方法的使用&&事件练习:封装兼容性添加、删除事件的函数&&星级评分系统
- Page_Init和Page_Load事件的区别
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- 添加Page_Init事件
- jquery操作中使用window.onbeforeload()方式无法解除事件的方法
- 解决jQuery使用append添加的元素事件无效的方法