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 广义上多态性的体现:①方法的重写,重 ...
随机推荐
- 如何在PHP里面连接数据库
第一步 创造一个连接 $a = mysql_connect("localhost","root",""); 括号里面参数的意思: 1.l ...
- 强连通+二分匹配(hdu4685 Prince and Princess)
Prince and Princess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- codeforces 520 Two Buttons
http://codeforces.com/problemset/problem/520/B B. Two Buttons time limit per test 2 seconds memory l ...
- sqlserver 存储过程 以及统计整个数据库数据
drop proc test 删除存储过程 go 用于在 SSMS 和 SQLCMD 中将其之前的 T-SQL 语句作为一个批处理提交给 SQL Server 实例.GO 不是 T-SQL 语句,只 ...
- JDBC工作模块
jdbc-->java数据库连接 的简称 JDBC工作模块 加载jdbc驱动 与数据库连接 发送sql语句,得到返回结果 处理返回结果 释放资源
- linux第1天 fork exec 守护进程
概念方面 文件是对I/O设备的抽象表示.虚拟存储器是对主存和磁盘I/O设备的抽象表示.进程则是对处理器.主存和I/O设备的抽象表示 中断 早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念 ...
- CSS_03_04_CSS伪元素选择器
第01步:编写css代码:wei.css @charset "utf-8"; /* 伪元素选择器 :状态 效果顺序:L V H A */ a:link.lin_01{/*超链接,未 ...
- SQL Server数据库性能优化(一)之 优化SQL 语句
最近工作上基本没什么需求(好吧 不是最近是好久了,所以随便看看基础的东西来填补自己的空白) 原文出自:http://www.blogjava.net/allen-zhe/archive/2010/07 ...
- MVC4中给TextBoxFor设置默认值和属性
例如:(特别注意在设置初始值的时候 Value 中的V要大写) @Html.TextBoxFor(model => model.CustomerCode, new { Value=" ...
- Cortex-R5
TCM:Tightly Coupled Memory,连接到RAM等memory中,但是CPU读写速度很快. ECC:Error Checking and Correction PMU:Perform ...