• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            We do not always find visible happiness in proportion to visible virtue

            夢幻白樺林

            SHARE

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

            公告

            常用鏈接

            留言簿(5)

            搜索

            •  

            最新隨筆

            最新評論

            閱讀排行榜



            l 初始化
            ² 當頁面被提交請求第一個方法永遠是構造函數。您可以在構造函數里面初始一些自定義屬性或對象,不過這時候因 為頁面還沒有被完全初始化所以多少會有些限制。特別地,您需要使用HttpContext對象。當前可以使用的對象包括QueryString, Form以及Cookies集合,還有Cache對象。注意:在構造函數里是不允許使用Session的。

            ² 下一個將執行的方法是AddParsedSubObject方法,這個方法將添加所有獨立的控件并把頁面組成一個控件集合樹,這個方 法經常被一些高級的頁面模板解決方案(Page Template Solutions)重寫以便添加頁面內容到頁面模板(Page Template)中一些特殊的控件中。這個方法遞歸應用到所有的頁面控件及相應的的每個子控件,所有的控件都是在這個方法中開始最早的初始化。

            ² 頁面類中下一個將執行的方法是DeterminePostBackMode。這個方法允許您修改IsPostBack的值及相關的事件。如果您 需要從數據庫中加載ViewState這個方法將特別有用,因為ViewState只有在IsPostBack為真的情況下才會進行恢復。返回空將會導致 強制執行非回傳,返回Request.Form則強制執行一個回傳。除非在特殊情況下,否則并不建議去操作這個,因為這個還會影響其他的事件。

            ² 下一個將要執行的方法是OnInit方法,一般這是第一個真正被使用的方法。這個方法觸發時,所有頁面定義中的控件執行初始化,這意味著所有在 頁面中定義的值應用到相應的控件上。不過,ViewState和傳回的值還不會應用到控件上,因此,任何被代碼或用戶改變的值還沒有被恢復到控件上。這個 方法通常是最好的創建、重創建動態控件的好地方。
            l 恢復及加載
            ² 下一個方法, LoadPageStateFromPersistenceMedium只會在頁面被回傳的時候才會被執行。如果因為使用Session或自定義存儲方 式,您修改了后面將要提到的影響ViewState保存方式的方法SavePageStateToPersistenceMedium,則這個方法需要被 重寫。默認的實現中ViewState是一種Base64格式編碼,并且被保存在頁面的隱藏域中,您可以使用這篇文章中提及的方法修改ViewState 按以上兩種方式保存。注意:這個方法并沒有真正加載ViewState到頁面或頁面控件中。

            ² 當得到ViewState后,下一個方法LoadViewSate,將以遞歸的方式恢復ViewState到頁面及各個頁面控件或子控件中。這 個方法執行后,每個控件都將恢復到上一次的狀態,但是用戶提交的數據還沒有應用到控件上,因為他們不是ViewState的一部分。這個方法主要用于恢復 您在其他事件中動態生成的控件的值,他們的值是您手動保存在ViewSate中,并且現在已經失效。

            ² 下一個方法是ProcessPostData,這個方法也同樣是回傳的時候才會被執行,并且不允許被重寫,這個是頁面基類的私有方法。這個方法 通過匹配控件的名稱恢復相應的用戶提交的控件的值,到這一步意味著整個頁面都已經被完全恢復了。唯一要記住的是所有動態控件的創建必須在這個方法之前。這 個方法也是記錄后面的改變事件的方法。

            ² 下一個方法是OnLoad方法,通常這是用得最多的方法,因為這個方法是頁面生存期第一個恢復了所有值的地方。大多數代碼根據判斷 IsPostBack來決定是否重新設置控件狀態。您也可以在這個方法中調用Validate并且檢查IsValid的值。也可以在這個方法中創建動態控 件,并且該控件的所有的方法都會被執行以追上當前頁面的狀態包括ViewSate,不過不包括回傳的值。
            l 事件處理
            ² 下一個方法還是 ProcessPostData,實際上就是前一個方法的另一次調用,它仍然是只在回傳的時候執行并且由于是私有方法不可以被重寫。如果您是第一次看頁面 的運行軌跡也許會覺得這個方法有些多余。但實際上這個方法是必要的因為在OnLoad中創建的動態控件也需要他們回傳的值。任何在這以后創建的控件將可以 得到他們的ViewState,但是不能再得到他們的回傳的值,并且不會觸發任何值改變事件(Change Event)。

            ² 下一個方法,RaiseChangedEvents,也是只在回傳頁面中執行,并且也因為是基類的私有方法所有不能被繼承。在整個頁面生存期 中,是在這兒根據之前的ProcessPostData記錄的控件的值和提交的值是否不同來觸發值改變事件。您也許需要調用Validate或者檢查 IsValid的值。這里并沒有特別的說明多個值改變事件的執行先后順序。

            ² 下一個方法,RaisePostBackEvent,同樣是因為是基類的私有方法不能被繼承,同樣也是只在回傳頁面中執行。除非使用了 AutoPostBack,不然這是實際提交表單事件執行的地方,特別是按鈕或者其實使用javascript提交表單等。如果還沒有被手動調用過并且使 用了驗證控件,那么Validate會被調用。注意IE中有個BUG有時會允許提交但卻不觸發任何事件。

            ² 下一個方法是OnPreRender,一般這是在客戶端展現頁面之前改變頁面及其控件的最后一次機會。您也可以在這個方法里面創建動態控件,并 且所有的方法都會被執行以追上當前頁面的狀態包括ViewSate,但是私有方法將不會被執行,這意味著不會有回傳的值并且不會有事件觸發。由于IE中的 BUG,這是一個沒有事件趕上PostBack的好地方。
            l 保存及顯示
            ² 下一個方法是SaveViewState,不論是否是回傳頁 面,均會遞歸的執行以保存頁面及其所有控件的ViewState。ViewState基本上保存所有與定義在aspx中的原始值不同的值,不管是被代碼還 是用戶所改變。注意控件值是根據他們在頁面的控件樹中的位置來保存的,所以如果動態控件后來加到了錯誤的位置將會導致混亂。

            ² 下一個方法是SavePageStateToPersistenceMedium真正的保存頁面的ViewSate。這個方法隨同 LoadPageStateFromPersistenceMediumg 一起被重寫以便保存ViewState到Session或其它自定義數據,而不是用隱藏域。這對于低帶寬的用戶來說是很有幫助的。并且對于移動設備來說, Session是默認設置。下面這篇文章描述了使用以上兩種方式保存ViewState的具體細節。注意在Asp.net中有個Bug:Asp.net要 求必須提交__viewstate字段,即使是空的。

            ² 下一個方法是Render方法,該方法遞歸的創建并發送相應控件的html給瀏覽器。這個方法被一些頁面模板方案重寫以添加一些通用的頁面頭與 腳而不使用服務器控件,他們總是有一些額外的東西。注意這兒的修改只能使用純HTML,因為控件在這兒已經被生成了。您可以用 StringBuilder,StringWriter,HtmlTextWriter捕獲相應的HTML輸出。

            ² 最后的方法是OnUnload,這個方法會調用相應的Dispose方法。這個方法提供機會以便清空該頁面中使用的非托管資源,如關閉打開的文 件句柄,以前打開的數據庫連接等。注意這個方法是在頁面已經發送到客戶端以后執行的,所以它只有影響服務器對象,并且它不會顯示在頁面的顯示軌跡中。這就 是頁面的生存期,對于每一次請求都是這么運行的。
            l 作者簡介(略)

            表1:頁面事件總結


            方法回傳控件


            ConstructorAlwaysAll
            AddParsedSubObjectAlwaysAll
            DeterminePostBackModeAlwaysPage
            OnInitAlwaysAll


            LoadPageStateFromPersistenceMediumPostBackPage
            LoadViewStatePostBackAll
            ProcessPostData1PostBackPage
            OnLoadAlwaysAll


            ProcessPostData2PostBackPage
            RaiseChangedEventsPostBackPage
            RaisePostBackEventPostBackPage
            OnPreRenderAlwaysAll


            SaveViewStateAlwaysAll
            SavePageStateToPersistenceMediumAlwaysPage
            RenderAlwaysAll
            OnUnloadAlwaysAll

            posted on 2007-04-22 09:27 colys 閱讀(542) 評論(1)  編輯 收藏 引用

            Feedback

            # re: asp.net 頁面事件:順序與回傳[未登錄] 2015-06-01 12:48 1
            1212121  回復  更多評論
              

            久久99免费视频| 午夜精品久久久久久中宇| av无码久久久久久不卡网站| 国产精品美女久久久久久2018| 久久免费国产精品一区二区| 久久亚洲国产精品五月天婷| 久久青青草原精品国产| 国产精品99久久久久久www| 中文字幕无码av激情不卡久久| 精品国产乱码久久久久久呢| 久久精品嫩草影院| 77777亚洲午夜久久多人| 91精品国产综合久久香蕉| 亚洲中文字幕无码久久2017| 久久久精品视频免费观看| 国产成人精品久久免费动漫| 久久久高清免费视频| 91精品日韩人妻无码久久不卡| 久久久久99这里有精品10| 国产无套内射久久久国产| 日韩av无码久久精品免费| 久久亚洲AV成人无码| 久久本道久久综合伊人| 夜夜亚洲天天久久| aaa级精品久久久国产片| 天堂久久天堂AV色综合| 中文字幕无码久久精品青草 | 91性高湖久久久久| 一本色道久久综合狠狠躁| 久久受www免费人成_看片中文| 久久国产视屏| 久久伊人色| 亚洲国产精品综合久久网络| 国产真实乱对白精彩久久| 久久精品国产半推半就| 国产91色综合久久免费| 香港aa三级久久三级| 精品综合久久久久久88小说| 精品99久久aaa一级毛片| 久久人妻少妇嫩草AV蜜桃| 日韩十八禁一区二区久久|