• ASP.net中页面事件的先后顺序


    事件顺序

    客户发出POST请求-〉创建Page派生类,调用构造函数-〉调用Page类的IHttpHandler.ProcessRequest方法-〉激活Page类的Init事件-〉调用Page类的CreateChildControls虚方法-〉从POST变量和VIEWSTATE中还原服务器端控件状态-〉激活Page类的Load事件-〉激活服务器端控件事件-〉激活Page类的PreRender事件-〉调用Page类的Render虚方法-〉调用Page类的RenderChildren虚方法-〉发送HTTP响应给客户端-〉激活Page类的Unload事件-〉丢弃Page派生类的实例。
    如果创建一个ASP.NET 2.0页面,并打开跟踪功能,就会看到主页面事件的启动顺序,它们按照下面的顺序启动:

    (1) PreInit

    (2) Init

    (3) InitComplete

    (4) PreLoad

    (5) Load

    (6) LoadComplete

    (7) PreRender

    (8) PreRenderComplete

    (9) Unload

    添加了这些新的页面事件后,就可以在页面编译期间在许多不同的地方处理页面和页面上的控件。

    其中

    ●  InitComplete:表示页面完成了初始化

    ●  LoadComplete:表示页面完全加载到内存中

    ●  PreInit:表示页面初始化前的那一刻

    ●  PreLoad:表示页面加载到内存前的那一刻

    ●  PreRenderComplete:表示页面显示在浏览器中之前的那一刻

     如果页面从令一个页面继承,如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

    在使用ASP.NET页面时,一定要理解刚才介绍的页面事件。它们非常重要,因为在页面生存期的特定位置,要在这些事件中放置许多页面代码。

    在Active Server Pages 3.0中,开发人员把页面传送给应用程序中的其他页面。ASP.NET页面一般要回送给自己,以处理事件(例如按钮单击事件)。

    所以,必须区分终端用户在第一次加载页面时传送的内容和回送的内容。回送就是传送回原来的页面。回送包含在初始页面上收集的所有窗体信息,以备在需要时处理。

    所有的回送都在ASP.NET页面上进行,所以要弄清楚是请求页面的第一个实例,还是请求回送的原来的页面。使用Page类的IsPostBack属性可以进行此项检查.

    跨页面的传送

    跨页面的传送就是提交窗体(例如Page1.aspx),并把这个窗体和所有的控件值都传送给另一个页面(Page2.aspx)。

     

    要从第二个页面中获得Page1.aspx中的控件值,有两个选项。要获得从前一个页面传送过来的控件值,只需创建该控件类型的一个实例,并用PreviousPage属性中的FindControl方法填充该实例。赋予FindControl方法的String值是Id值,它用于前一个页面上的服务器控件。赋予了值之后,就可以处理该服务器控件及其值了,就好像它最初位于当前页面上一样。从例子中可以看出,可以从控件中提取Text和SelectedDate属性。

    从第一个页面(Page1.aspx)中获取控件值的另一种方法是创建该控件的Property.

    转:http://book.csdn.net/bookfiles/171/1001717699.shtml

  • 相关阅读:
    勤娇猛伤湃负纶孪跋贡那睦
    C#
    日记造词——有世无解
    chrome主页被hao123篡改,怎么改回来?
    不知还有人遇到这个问题没有:数据库 'xxx' 的版本为 706,无法打开。此服务器支持 661 版及更低版本。不支持降级路径。
    JQuery插件(三)分页插件-JqPaginator
    Jquery插件(二) filterMore仿京东筛选插件
    Jquery插件(一) webupload上传插件
    hadoop安装配置
    亚马逊aws ubuntu设置root 密码方式登录方法
  • 原文地址:https://www.cnblogs.com/roamman/p/1250068.html
Copyright © 2020-2023  润新知