Page_Init初始化一些控件和事件代理,在Page_Load前执行

解决方案 »

  1.   

    是ASPX页面过程中的两个事件,Page_Init事件发生时,ASPX编码内的控件对象已经全部生成,Page_Load事件发生时,这些对象的状态恢复到上次调用时的状态Control Execution Lifecycle
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconcontrolexecutionlifecycle.asp
      

  2.   

    Page_Load是让用户来定义页面加载时需要那些处理。说白了,和普通的事件没有什么两样。
    Page_Init是对控件事件的句柄化处理,它通过代理的机制,实现对控件事件的定义。个人感觉很符合我们编程时先定义后使用的习惯
      

  3.   

    Page_Init可以认为是浏览页面句柄产生时发生的事件,它将在伺服器端产生一块栈区以存放经由其初始化过的对象,当Page_Load发生时,就在其初始化的基础上对对象进行操控。如下程序段能说明问题:
    <script language="C#" runat="server">
    int intGlobal=0;
    void Page_Init()
    {
    intGlobal++;
    Message1.Text+="<br>Page_Init has called"+DateTime.Now  +"with the value "+intGlobal;
    }
    void Page_Load()
    {
    intGlobal++;
    Message2.Text+="<br>Page_Load has called"+ DateTime.Now +"with the value "+intGlobal;
    }
    </Script>
    <html>
    <body>
    <form runat="server">
    <input type="submit" value="click to continue"/><br>
    <asp:label id="Message1" runat="server"/>
    <asp:label id="Message2" runat="server"/>
    </Form>
    </body>
    </html>
      

  4.   

    Page_Init事件发生时,ASPX编码内的控件对象已经全部生成,Page_Load事件发生时,这些对象的状态恢复到上次调用时的状态