asp.net OnInit、OnLoad、Page_Load、Page_Init父子页面执行顺序探究
本次探究page页面加载的时候,它们的执行顺序
BasePage
public class BasePage : Page
{ public string BaseName { get; set; }
public BasePage()
{
//
//TODO: 在此处添加构造函数逻辑
//
} protected override void OnLoad(EventArgs e)
{
int i = ;
this.Load += Page_Load;
base.OnLoad(e);
i++;
SearchData();
} protected void Page_Load(object sender, EventArgs e)
{
this.BaseName = "父亲load事件";
} protected override void OnInit(EventArgs e)
{
int i = ;
this.Init += Page_Init;
base.OnInit(e);
i++;
} protected void Page_Init(object sender, EventArgs e)
{
this.BaseName = "父亲init事件";
} /// <summary>
/// 获取数据
/// </summary>
public virtual void SearchData()
{
} }
public partial class TestPage : BasePage
{
public string Name { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
this.Name = "儿子load事件";
} protected override void OnLoad(EventArgs e)
{
int i = ;
base.OnLoad(e);
i++; } protected override void OnInit(EventArgs e)
{
int i = ;
//this.Init += Page_Init;
base.OnInit(e);
i++;
} protected void Page_Init(object sender, EventArgs e)
{
this.BaseName = "儿子init事件";
} public override void SearchData()
{
this.Name = "执行";
}
}
每一个方法体都打上断点 运行
父类构造函数》子类构造函数》子类OnInit》子类base.OnInit(e);》父类OnInit》父类base.OnInit(e);》【子类Page_Init(object sender, EventArgs e) 或 父类Page_Init(object sender, EventArgs e)事件依次执行】》父类OnInit中剩余代码执行完毕》子类OnInit中剩余代码执行完毕》子类OnLoad》子类base.OnLoad(e);》父类OnLoad》父类base.OnLoad(e);》【子类Page_Load(object sender, EventArgs e) 或 父类Page_Load(object sender, EventArgs e)事件依次执行】》父类OnLoad中剩余代码执行完毕》子类OnLoad中剩余代码执行完毕
执行子类Page_Init(object sender, EventArgs e) 或 父类Page_Init(object sender, EventArgs e)的先后顺序,是由注册事件的先后顺序决定的,
如果在父类构造函数中注册事件,那么就先执行父类的事件。
public class BasePage : Page
{ public string BaseName { get; set; }
public BasePage()
{
this.Load += Page_Load;
this.BaseName = "父亲";
//
//TODO: 在此处添加构造函数逻辑
//
}
另外有个小知识点就是页面里我们可以看到
AutoEventWireup="true"这样一个设置
这是在页面初始化的时候会自动将Page_Load事件或者Page_Init事件注册。所以如果将注释的注册事件取消注释,子类的Page_Init事件就会执行两边,因为事件被注册了两次。
asp.net OnInit、OnLoad、Page_Load、Page_Init父子页面执行顺序探究的更多相关文章
- ASP.NET 页面执行顺序详解
今天整理了一下ASP执行过程,从.net页码的执行周期开始做一个详细的了解.我重写了页面的绝大多数方法.然后加载执行.所得的顺序如下. 方法是每个重写的事件中都输出一个字符,按字符打印出来的先后判断事 ...
- ASP.NET 页面执行顺序
1.对象初始化(Onlnit方法) 页面中的控件(包括页面本身)都是在它们最初的form中被首次初始化的,通过在aspx页面的后台代码文件的构造器中声明你的对象,页面将知道对象的类型,并知道需要创建多 ...
- ASP.NET页面执行顺序
原文地址:http://blog.csdn.net/a497785609/article/details/4510335 1.对象初始化(OnInit方法) 页面中的控件(包括页面本身)都是在它们最初 ...
- javascript中onload事件如何绑定及执行顺序
onload事件,顾名思义就是为了js程序能够在网页加载成功过后进行执行.对于放在head里面的js来说,非常必要. 如何给网页绑定onload,主要有三种方式: window.onload=func ...
- onbeforeunload、onpagehide、onunload、onload、onpageshow的正确执行顺序
一.Chrome支持onbeforeunload.onpagehide.onunload,只是在这些方法执行的时候alert,console这些方法已经被注销了. 二.浏览器跳转.关闭.刷新时都按a, ...
- Page_Load与Page_PreRender的执行顺序
原文发布时间为:2009-10-25 -- 来源于本人的百度文章 [由搬家工具导入] Page_PreRender 服务器控件将要呈现给其包含的 控件时发生。简单的理解为page中的控件渲染调用此事件 ...
- 一张图看懂ASP.NET MVC5认证和授权过滤器的执行顺序
IAuthenticationFilter是MVC5中的新特性,它有2个关键方法: OnAuthentication OnAuthenticationChallenge 当IAuthenticatio ...
- ASP.NET MVC自定义Module记录管道事件执行顺序
1. 在Visual Studio 新建项目,模板为空,下面结构选择MVC. 2. 在项目中新建一个类MyModule,实现IHttpModule接口 namespace SimpleApp.Infr ...
- JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...
随机推荐
- PostgreSQL Replication之第十章 配置Slony(2)
10.2 理解 Slony如何工作 在我们开始复制我们的第一个数据库之前,我们想深入Slony的架构.理解这是如何工作的是非常重要的,否则,将不可能以一种有用的和合理的方法使用这个软件.与事务日志流不 ...
- Java SE series:1. environment configure and Hello world! [We use compiler and packager to create an application!]
1. cli (command line interface) and gui (graphic user interface) use javahome path, search classpath ...
- bzoj4238 电压
首先先直接对图进行二染色,dfs染完色后,有的边为搜索树边,有的为非树边,当非树边连接的两头的点为异色的时候,那么很明显这条非树边和树边构成的环上的边必然不可能成为答案:如果非树边的两端的点同色,那么 ...
- CCF真题之画图
201409-2 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩形的 ...
- 记linux下使用create_ap 创建热点失败及解决(涉及rfkill)
先介绍一下 create_ap. 这是一个在linux中创建热点用的脚本, 托管在github中, https://github.com/oblique/create_ap/ 正文开始: 习惯了win ...
- 《OpenGL着色语言》理解点记录三
“帧缓冲区”中的“帧”的含义? “帧”是连续图像中的一幅,3D可视化程序最终都是转化为一幅幅的图像输出在显示器上,这一幅幅的图像叫做叫“帧”. 解释“glBlendFunc(GL_SRC_AL ...
- Selenium 新手入门(C#)1. 用vs运行调用Selenium打开页面
Start步骤: 1.从http://docs.seleniumhq.org/download/ 下载 C# dll 文件和 Internet Explorer Driver Server(32 或 ...
- 获取CPUID等
unit CommonUnit; interface uses Windows, SysUtils, DateUtils; Const CPUVendorIDs: .. ] of string = ( ...
- java的web项目中使用cookie保存用户登陆信息
本文转自:http://lever0066.iteye.com/blog/1735963 最近在编写论坛系统的实现,其中就涉及到用户登陆后保持会话直到浏览器关闭,同时可以使用cookie保存登陆信息以 ...
- org.apache.cxf.interceptor.Fault: No such operation
webservice错误,访问的时候加后缀wsdl即可,如:http://localhost:9000/HelloWorld?wsdl