知识大全 C#.net Page执行顺序
Posted 事件
篇首语:宝剑锋从磨砺出,梅花香自苦寒来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#.net Page执行顺序相关的知识,希望对你有一定的参考价值。
C#.net Page执行顺序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
using System;
using System Data;
using System Configuration;
using System Web;
using System Web Security;
using System Web UI;
using System Web UI WebControls;
using System Web UI WebControls WebParts;
using System Web UI HtmlControls;
public partial class _Default : Page
protected void Page_Load(object sender EventArgs e)
#region OnPreInit 第一步
protected override void OnPreInit(EventArgs e)
//检查 IsPostBack 属性来确定是不是第一次处理该页
//创建或重新创建动态控件
//动态设置主控页
//动态设置 Theme 属性
//读取或设置配置文件属性值
//注意
//如果请求是回发请求 则控件的值尚未从视图状态还原 如果在此阶段设置控件属性 则其值可能会在下一事件中被重写
base OnPreInit(e);
#endregion
#region OnInit 第二步
protected override void OnInit(EventArgs e)
//在所有控件都已初始化且已应用所有外观设置后引发 使用该事件来读取或初始化控件属性
base OnInit(e);
#endregion
#region OnInitComplete 第三步
protected override void OnInitComplete(EventArgs e)
//由 Page 对象引发 使用该事件来处理要求先完成所有初始化工作的任务
base OnInitComplete(e);
#endregion
#region PreLoad 第四步
protected override void OnPreLoad(EventArgs e)
//如果需要在 Load 事件之前对页或控件执行处理 请使用该事件
//在 Page 引发该事件后 它会为自身和所有控件加载视图状态 然后会处理 Request 实例包括的任何回发数据
base OnPreLoad(e);
#endregion
#region OnLoad 第五步
protected override void OnLoad(EventArgs e)
//Page 在 Page 上调用 OnLoad 事件方法 然后以递归方式对每个子控件执行相同操作 如此循环往复 直到加载完本页和所有控件为止
//使用 OnLoad 事件方法来设置控件中的属性并建立数据库连接
base OnLoad(e);
#endregion
#region 控件事件 第六步
protected void Button _Click(object sender EventArgs e)
//用这些事件来处理特定控件事件 如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件
//注意
//在回发请求中 如果页包含验证程序控件 请在执行任何处理之前检查 Page 和各个验证控件的 IsValid 属性
#endregion
#region OnLoadComplete 第七步
protected override void OnLoadComplete(EventArgs e)
//对需要加载页上的所有其他控件的任务使用该事件
base OnLoadComplete(e);
#endregion
#region OnPreRender 第八步
protected override void OnPreRender(EventArgs e)
//在该事件发生前
//Page 对象会针对每个控件和页调用 EnsureChildControls
//设置了 DataSourceID 属性的每个数据绑定控件会调用 DataBind 方法 有关更多信息 请参见下面的数据绑定控件的数据绑定事件
//页上的每个控件都会发生 PreRender 事件 使用该事件对页或其控件的内容进行最后更改
base OnPreRender(e);
#endregion
#region SaveStateComplete 第九步
protected override void OnSaveStateComplete(EventArgs e)
//在该事件发生前 已针对页和所有控件保存了 ViewState 将忽略此时对页或控件进行的任何更改
//使用该事件执行满足以下条件的任务 要求已经保存了视图状态 但未对控件进行任何更改
base OnSaveStateComplete(e);
#endregion
#region Render 第十步
//Render
//这不是事件 在处理的这个阶段 Page 对象会在每个控件上调用此方法 所有 ASP NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法
//如果创建自定义控件 通常要重写此方法以输出控件的标记 不过 如果自定义控件只合并标准的 ASP NET Web 服务器控件 不合并自定义标记 则不需要重写 Render 方法 有关更多信息 请参见开发自定义 ASP NET 服务器控件
//用户控件( ascx 文件)自动合并呈现 因此不需要在代码中显式呈现该控件
#endregion
#region OnUnload 第十一步
protected override void OnUnload(EventArgs e)
//该事件首先针对每个控件发生 继而针对该页发生 在控件中 使用该事件对特定控件执行最后清理 如关闭控件特定数据库连接
//对于页自身 使用该事件来执行最后清理工作 如 关闭打开的文件和数据库连接 或完成日志记录或其他请求特定任务
//注意
//在卸载阶段 页及其控件已被呈现 因此无法对响应流做进一步更改 如果尝试调用方法(如 Response Write 方法) 则该页将引发异常
base OnUnload(e);
#endregion
当页面进行回发时 如点击按钮 以上事件都会重新执行一次 这时的执行顺序为
OnPreInit
OnInit
OnInitComplete
OnPreLoad
Page_Load
OnLoad
Button_Click
OnLoadComplete
OnPreRender
可以看到 Button_Click事件位于OnLoad之后执行 可以测试一下
public partial class TestControls : System Web UI Page
static int count = ;
protected void Page_Load(object sender EventArgs e)
Response Write(count+ Page_Load <br /> );
count++;
protected override void OnPreInit(EventArgs e)
base OnPreInit(e);
Response Write(count + OnPreInit <br /> );
count++;
protected override void OnInit(EventArgs e)
base OnInit(e);
Response Write(count + OnInit <br /> );
count++;
protected override void OnLoad(EventArgs e)
base OnLoad(e);
Response Write(count + OnLoad <br /> );
count++;
protected override void OnPreLoad(EventArgs e)
base OnPreLoad(e);
Response Write(count + OnPreLoad <br /> );
count++;
protected override void OnLoadComplete(EventArgs e)
base OnLoadComplete(e);
Response Write(count + OnLoadComplete <br /> );
count++;
protected override void OnInitComplete(EventArgs e)
base OnInitComplete(e);
Response Write(count + OnInitComplete <br /> );
count++;
protected override void OnUnload(EventArgs e)
base OnUnload(e);
protected override void OnDataBinding(EventArgs e)
base OnDataBinding(e);
Response Write(count + OnDataBinding <br /> );
count++;
protected override void OnPreRender(EventArgs e)
base OnPreRender(e);
Response Write(count + OnPreRender <br /> );
count++;
protected void btnGraphics_Click(object sender EventArgs e)
//Bitmap bmp = new Bitmap( );
//Graphics g = Graphics FromImage(bmp);
Response Write(count + btnGraphics_Click <br /> );
count++;
cha138/Article/program/net/201311/12283
相关参考
MasterPage(母版页)是VS中新引入的一个概念它很好地实现界面设计的模块化并且实现实现了代码的重用它就像婚纱影楼中的婚纱模板同一个婚纱模板可以给不同的新人用
ASP.NET中基类Page 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 加载对应Load事件
知识大全 ASP.NET中Page.Ispostback属性详解
ASP.NET中Page.Ispostback属性详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 ASP.NET入门教程 10.3.1 Page指令
ASP.NET入门教程10.3.1Page指令 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
ASP.NETWebPage应用深入探讨 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一服务器
知识大全 ASP.NET 2.0 Master Page主题以及皮肤的使用
ASP.NET2.0MasterPage主题以及皮肤的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
Asp.net2.0的心得:MasterPage的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
下列模块属于分散控制系统现场控制站的执行代码,并固化在EPROM中的是()各个模块的调用顺序按系统生成的数据结构和算法进
下列模块属于分散控制系统现场控制站的执行代码,并固化在EPROM中的是()各个模块的调用顺序按系统生成的数据结构和算法进行。A、输入处理模块和输出处理模块B、顺序逻辑控制模块C、数据处理模块与故障诊断
下列模块属于分散控制系统现场控制站的执行代码,并固化在EPROM中的是()各个模块的调用顺序按系统生成的数据结构和算法进
下列模块属于分散控制系统现场控制站的执行代码,并固化在EPROM中的是()各个模块的调用顺序按系统生成的数据结构和算法进行。A、输入处理模块和输出处理模块B、顺序逻辑控制模块C、数据处理模块与故障诊断
Java多线程顺序执行 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb