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数据库系统的进程结构
PostgreSQL数据库系统的主要功能都集中于Postgres程序,其入口是Main模块中的main函数,在初始化数据集簇,启动数据库服务器是,都将从这里开始执行.Main模块主要的工作时确定当前的 ...
- 如何使用Jlink
下载程序: 1. 连上Jlink的USB到PC上.连接JTAG到GT2440开发板上,选择从Nor Flash 启动. 2. 板子上电后,启动J-Flash ARM .File -> New P ...
- dev c++ 的一些快捷键
Ctrl+N新建源代码Ctrl+O打开工程或源文件Ctrl+S保存Ctrl+Alt+S另存为Ctrl+W关闭Ctrl+P打印Ctrl+Z回复Ctrl+Y重做Ctrl+Q切换头/源文件Ctrl+.注释C ...
- 转:python webdriver API 之下拉框处理
下拉框也是 web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位,我们在前面的例子中已经有过使用,下面通过 ...
- [转]SecureCRT使用配置详细图文教程
Secure CRT是一款支持 SSH2.SSH1.Telnet.Telnet/SSH.Relogin.Serial.TAPI.RAW 等协议的终端仿真程序,最吸引我的是,SecureCRT ...
- cookie的保存时间
使用 .setMaxAge()设置(单位是秒) second>0 保存在硬盘上的时间 second<0 默认保存在浏览器的内存中 second=0 立即删除
- cannot modify header information 关于实现widget页面跳转的问题
查找网上解决此问题的方法多是一样的,不过今天又遇到了这样的问题.试过之后发现可行: 在C盘的WINDOWS或者你的PHP文件夹中找到php.ini 这个配置文件,然后查找一项:output_buffe ...
- it精英的艰辛路程
我出生在呼和浩特市,但我并不是蒙古族人,而是彻彻底底的汉族人.我父亲小时候因为家里穷,十八九岁就独自出来闯荡了,后来在呼和浩特市发展的不错,还遇到了我妈,就定居下来了,结婚两年后就有了我. 小时候的家 ...
- em和rem及rem在移动的应用
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <style t ...
- LDA-math-文本建模
http://cos.name/2013/03/lda-math-text-modeling/ 4. 文本建模 我们日常生活中总是产生大量的文本,如果每一个文本存储为一篇文档,那每篇文档从人的观察来说 ...