本次探究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父子页面执行顺序探究的更多相关文章

  1. ASP.NET 页面执行顺序详解

    今天整理了一下ASP执行过程,从.net页码的执行周期开始做一个详细的了解.我重写了页面的绝大多数方法.然后加载执行.所得的顺序如下. 方法是每个重写的事件中都输出一个字符,按字符打印出来的先后判断事 ...

  2. ASP.NET 页面执行顺序

    1.对象初始化(Onlnit方法) 页面中的控件(包括页面本身)都是在它们最初的form中被首次初始化的,通过在aspx页面的后台代码文件的构造器中声明你的对象,页面将知道对象的类型,并知道需要创建多 ...

  3. ASP.NET页面执行顺序

    原文地址:http://blog.csdn.net/a497785609/article/details/4510335 1.对象初始化(OnInit方法) 页面中的控件(包括页面本身)都是在它们最初 ...

  4. javascript中onload事件如何绑定及执行顺序

    onload事件,顾名思义就是为了js程序能够在网页加载成功过后进行执行.对于放在head里面的js来说,非常必要. 如何给网页绑定onload,主要有三种方式: window.onload=func ...

  5. onbeforeunload、onpagehide、onunload、onload、onpageshow的正确执行顺序

    一.Chrome支持onbeforeunload.onpagehide.onunload,只是在这些方法执行的时候alert,console这些方法已经被注销了. 二.浏览器跳转.关闭.刷新时都按a, ...

  6. Page_Load与Page_PreRender的执行顺序

    原文发布时间为:2009-10-25 -- 来源于本人的百度文章 [由搬家工具导入] Page_PreRender 服务器控件将要呈现给其包含的 控件时发生。简单的理解为page中的控件渲染调用此事件 ...

  7. 一张图看懂ASP.NET MVC5认证和授权过滤器的执行顺序

    IAuthenticationFilter是MVC5中的新特性,它有2个关键方法: OnAuthentication OnAuthenticationChallenge 当IAuthenticatio ...

  8. ASP.NET MVC自定义Module记录管道事件执行顺序

    1. 在Visual Studio 新建项目,模板为空,下面结构选择MVC. 2. 在项目中新建一个类MyModule,实现IHttpModule接口 namespace SimpleApp.Infr ...

  9. JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...

随机推荐

  1. SQL 启动服务方法

    (1)windows开始菜单->Microsoft SQL Server 2012->配置工具->配置管理器

  2. vi/vim 键盘图 & 替换

    在VIM中进行文本替换:    1.  替换当前行中的内容:    :s/from/to/    (s即substitude)        :s/from/to/     :  将当前行中的第一个f ...

  3. 构造方法特点,void

    构造方法特点: 1.和类有相同的名字 2.无返回值 3.被默认强制void void作用:====>>说明声明的方法没有返回值 构造方法作用: -->初始化实例属性 -->用于 ...

  4. 查看Linux服务器各种信息方法

    有的时候需要搜集服务器的各种信息,比如cpu信息,内存信息,linux版本信息,安装的各种软件信息等等.下面总结几种主要指标的查看方法. 1. 查看Linux发行版信息 [root@pcmweb ~] ...

  5. Socket get http request

    package wuyubao.firstsample; import java.io.BufferedReader; import java.io.IOException; import java. ...

  6. Fresco源码解析 - DataSource怎样存储数据

    Fresco源码解析 - DataSource怎样存储数据 datasource是一个独立的 package,与FB导入的guava包都在同一个工程内 - fbcore. datasource的类关系 ...

  7. paper 55:图像分割代码汇总

    matlab 图像分割算法源码 1.图像反转 MATLAB程序实现如下:I=imread('xian.bmp');J=double(I);J=-J+(256-1); %图像反转线性变换H=uint8( ...

  8. mac ruby rails安装(使用rvm)

    mac的场合: which ruby -> /usr/bin/ruby -> 这是mac自带的ruby,我们希望能用管理ruby的版本. 安装rvm curl -L https://get ...

  9. bootstrap, boosting, bagging 几种方法的联系

    http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jack ...

  10. java web sql注入测试(3)---现象分析

    那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用 ...