大众计算机学习网

专门提供各种电脑教程

aspx页面载入事件的先后顺序及说明

Admin | 2014-7-1 11:58:42 | 被阅次数 | 2664

  Page 执行中将按照如下顺序激活事件

  Page.PreInit
  Page.Init
  Page.InitComplite
  Page.PreLoad
  Page.Load
  Page.LoadComplete
  Page.PreRender
  Page.PreRenderComplete

  上面的这些代码,一般会用到这两个事件,一个是Page.Load,这个事件通用用来绑定数据到控件中。另外一个是Page.PreRenderComplete,当刚才的那个事件成功之后,就到这个控件了,将自己的代码放在Page.PreRenderComplete事件中,就可以对Page.Load绑定的数据进行操作了,否则,不讲究顺序和规则的话,有的时候压根就无法获取所需要的数据。比如,下面给大家一个代码示例:

  protected void Page_PreRenderComplete(object sender, EventArgs e) //页面控件数据绑定完成后的事件
  {
        if (Session["SubjectName"].ToString().Trim() != "") //
        {
            for (int i = 0; i < DropDownList1.Items.Count; i++)
            {
                if (DropDownList1.Items[i].Text.ToString().Trim() == Session["SubjectName"].ToString().Trim())
                {
                    DropDownList1.SelectedValue = Session["SubjectName"].ToString().Trim();
                    DropDownList1.Enabled = false;
                }
            }
        }
  }

  如果页面从另一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是:

  UI.PreInit
  Page.PreInit
  UI.Init
  Page.Init
  UI.InitComplite
  Page.InitComplite
  UI.PreLoad
  Page.PreLoad
  UI.Load
  Page.Load
  UI.LoadComplete
  Page.LoadComplete
  UI.PreRender
  Page.PreRender
  UI.PreRenderComplete
  Page.PreRenderComplete

  如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活:

  ContentPage.PreInit
  Master.Init
  ContentPage.Init
  ContentPage.InitComplite
  ContentPage.PreLoad
  ContentPage.Load
  Master.Load
  ContentPage.LoadComplete
  ContentPage.PreRender
  Master.PreRender
  ContentPage.PreRenderComplete

  如果ContentPage继承BasePage,那么,各事件的执行顺序将变成了

  UI.PreInit
  ContentPage.PreInit
  Master.Init
  UI.Init
  ContentPage.Init
  UI.InitComplite
  ContentPage.InitComplite
  UI.PreLoad
  ContentPage.PreLoad
  UI.Load
  ContentPage.Load
  Master.Load
  UI.LoadComplete
  ContentPage.LoadComplete
  UI.PreRender
  ContentPage.PreRender
  Master.PreRender
  UI.PreRenderComplete
  ContentPage.PreRenderComplete