`
wgj830823
  • 浏览: 49699 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Page_Init和Page_Load的区别 (转)

阅读更多

在Init事件里,不处理 ViewState

Page_Init 是初始化页面,Page_Load是读取加载。

首先,我们要弄明白,Page是一个Class,这个明白吧?
然后,Page有两个事件,一个是Load事件,另外一个是Init事件。
然后,在那个构造方法里面,比如一般是Web Form1()
里面调了一个方法InitComponent(),在这个方法里面,为Page类的两个事件定义了两个处理方法,即
this.Load += new System.EventHandler(this.Page_Init);
this.Load += new System.EventHandler(this.Page_Load);

注意,这个Page_Load你可以改用你任何喜欢的名字:)
然后,你就可以在Page_Load里面写任何你喜欢写的代码了。
如果是WinForm的话,那上面的Page应该换为System.Windows .Forms.Form 这个类了。   
   事件的触发次序是page_init在先,page_load在后

他们都是不可或缺的,所以如果你重载这两个方法,不要忘记调用父类的同名方法,不然会出现很大问题。   
    
   在页面的init方法中,会“逐一调用所有子控件”,执行这样四项主要任务:   
   1.    从页面上的ViewState隐藏字段取回上一页面的状态值。   
   2.    取得用户新修改过的值(Post值)。如果发觉修改,还会记录下来准备触发changed事件。   
   3.    取得event事件,例如各个控件的click事件或者用户定义的事件,也是记录下来。   
   4.    调用TrackViewState方法,通知控件此时之后对ViewState的修改都需要输出保存到页面上。   
    
   在页面的load方法中,会“逐一调用所有子控件”的load事件。一般来说用户自定义的对控件属性的修改操作在此时完成。   
    
   但是,如果在page的load方法中动态地向控件的Controls集合添加新的子控件,此时仍然会对被添加的子控件执行上述所有操作。因此如果你创建 一个子控件,然后设置一个viewstate值,然后才把它放入page控件树中,会发现这个viewstate值没有保存住,又被原来的值“回填”回来 了。   
    
   在页面的load方法之后,才会触发各个控件的changed事件,之后是各种click和自定义事件。

控件自己从viewstate字段取回值的时候,是根据clientID作为唯一标识符的。此值是根据上层控件(如果未实现 INamingContainer接口则继续查找上层控件)的clientID加上自己的ID组合而成。   
    
   因此,对于动态增加的控件,如果没有准确地重建ClientID,就不要指望Viewstate中的值正确。同理,那些changed事件、click事 件和其它自定义事件也没办法准确触发。

为什么“一般来说用户自定义的对控件属性的修改操作在此时完成”呢?   
    
   因为只有这个时候各个控件的值才准备好。如果你的界面需要根据客户端录入的值,或者任何当前正确的页面属性值来生成(而不是简单得在一片空白的时候就能生 成),只能在这个时刻之后才恰当。

 

 

 

 

原文地址 <url>http://hi.baidu.com/huaxiaoya369/blog/item/a13c3762b42bff6a0c33fa34.html</url>

分享到:
评论

相关推荐

    uboott移植实验手册及技术文档

    关,如果没有定义这个宏,系统调用 drivers/nand/nand.c 中的 nand_init();否则调用自己在 本文件中的 nand_init()函数,本例使用后者。fs2410.c代码如下: #if defined(CONFIG_CMD_NAND) typedef enum { NFCE_...

    ARM_Linux启动分析.pdf

    init()初始化PAL代码,调用openboot() 打开引导设备(通过读取Firmware环境),调用load()将核心代码加载到START_ADDR(见 “include/asm-alpha/system.h”),再将Firmware中的核心引导参数加载到ZERO_PAGE(0) ...

    asp.net2.0系列教程第4章_第3节

    第三节母版页和内容页的事件先后顺序(Page_Load Page_Init)在内容页中访问母版页控件对象 嵌套母版页

    aspx页面事件执行顺序

    Page 执行中将按照如下顺序激活事件:Page.PreInit----&gt;Page.Init----&gt;Page.InitComplite----&gt;Page.PreLoad----&gt;Page.Load----&gt;Page.LoadComplete----&gt;Page.PreRender----&gt; Page.PreRenderComplete 如果页面从令一...

    ASP.NET的网页代码模型及生命周期

    protected void Page_Load(object sender, EventArgs e) { } } 上述代码为Default.apx.cs页面代码。从上述代码可以看出,其格式与类库、编写类的格式相同,这也说明了.aspx页面允许使用面向对象的特性,如多态、...

    详解C#委托,事件与回调函数

    无论在ASP.NET还是WINFrom开发中,窗体加载(Load),绘制(Paint),初始化(Init)等等。“protected void Page_Load(object sender, EventArgs e)”这段代码相信没有人不熟悉的。细心一点一定会发现,非常多的事件方法都...

    详解C#委托,事件与回调函数

    无论在ASP.NET还是WINFrom开发中,窗体加载(Load),绘制(Paint),初始化(Init)等等。 “protected void Page_Load(object sender, EventArgs e)”这段代码相信没有人不熟悉的。细心一点一定会发现,非常多的事件方法都...

    WordPress 3 Plugin Development Essentials.pdf

    Analogy: PC load letter 232 The decalog of documentation 233 Summary 235 Chapter 10: Publishing Your Plugin 237 Internationalization and localization 237 Processing each message 238 Choosing a ...

    zk api 文档

    InitiatorInfo The init directive in the ZUML page. LanguageDefinition A definition of a language, such as xul. NativeInfo Represents the compmonent infomation about the native components. NodeInfo ...

    Smarty中文手册 chm版

    Multiple Caches Per Page [每页多个缓存] Cache Groups [缓存集合] Controlling Cacheability of Plugins' Output [控制插件输出的缓冲能力] 15. Advanced Features [高级特点] Objects [对象] Prefilters [预...

    smarty手册.chm

    Multiple Caches Per Page [每页多个缓存] Cache Groups [缓存集合] Controlling Cacheability of Plugins' Output [控制插件输出的缓冲能力] 15. Advanced Features [高级特点] Objects [对象] Prefilters [预...

    oa源码 大型oa asp.net 源码

    base.Init += new EventHandler(this.Page_Init); base.Load += new EventHandler(this.Page_Load); this.mr = new Mr(); this.sysSet = new iofficeservice.sysSet(); this.Res = new iOfficeData.Res(); ...

    ExtAspNet_v2.3.2_dll

    ExtAspNet是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果, 目标是创建没有ViewState,没有JavaScript,没有CSS,没有UpdatePanel,没有WebServices的Web应用程序。 支持的浏览器: IE 7.0+, Firefox...

    C# 技术面试 宝典

    What methods are fired during the page load? Init () When the page is instantiated, Load() - when the page is loaded into server memory,PreRender () - the brief moment before the page is displayed to ...

    Android代码-SugarLoader

    SugarLoader A lightweight API to add syntax sugar to Android Loader API Why SugarLoader ? Google's Loader API is great, as it provides a...init -&gt; load -&gt; display page, without having to consider fragmen

    一个ASP.NET的JS管理方案,防止重复引用JS问题

    场景:在自定义控件、... protected void Page_Load(object sender, EventArgs e)  {  JavaScriptManager.JavaScriptManager.Include("~/JS/cs.js",  "~/JS/cs.js",  "~/JS/cs.js2",  "~/JS/cs.js");  } }

    如何实现web页面的提示保存功能

    InitializeComponent() End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ‘Put user code to initialize the page here txtSave....

    php.ini-development

    PHP attempts to find and load this configuration from a number of locations. ; The following is a summary of its search order: ; 1. SAPI module specific location. ; 2. The PHPRC environment variable....

    8-07-14_MegaCLI for linux_windows

    LSIP200233314 (DFCT) Pcilinkspeedset and adpdowngrade cmds are not working and Need to update Help page LSIP200232870 (DFCT) Add a Gen2 to Gen3 toggle function and a check for the PCI speed to ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    ExtAspNet v2.2.1 ExtAspNet是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果, 目标是创建没有JavaScript,没有... -在Page_Load中设置了哪些需要在AJAX中更新的Asp.net控件会在回发时保持状态,可以...

Global site tag (gtag.js) - Google Analytics