• <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

            夢(mèng)幻白樺林

            SHARE

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

            公告

            常用鏈接

            留言簿(5)

            搜索

            •  

            最新隨筆

            最新評(píng)論

            閱讀排行榜



            l 初始化
            ² 當(dāng)頁(yè)面被提交請(qǐng)求第一個(gè)方法永遠(yuǎn)是構(gòu)造函數(shù)。您可以在構(gòu)造函數(shù)里面初始一些自定義屬性或?qū)ο螅贿^(guò)這時(shí)候因 為頁(yè)面還沒(méi)有被完全初始化所以多少會(huì)有些限制。特別地,您需要使用HttpContext對(duì)象。當(dāng)前可以使用的對(duì)象包括QueryString, Form以及Cookies集合,還有Cache對(duì)象。注意:在構(gòu)造函數(shù)里是不允許使用Session的。

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

            ² 頁(yè)面類(lèi)中下一個(gè)將執(zhí)行的方法是DeterminePostBackMode。這個(gè)方法允許您修改IsPostBack的值及相關(guān)的事件。如果您 需要從數(shù)據(jù)庫(kù)中加載ViewState這個(gè)方法將特別有用,因?yàn)閂iewState只有在IsPostBack為真的情況下才會(huì)進(jìn)行恢復(fù)。返回空將會(huì)導(dǎo)致 強(qiáng)制執(zhí)行非回傳,返回Request.Form則強(qiáng)制執(zhí)行一個(gè)回傳。除非在特殊情況下,否則并不建議去操作這個(gè),因?yàn)檫@個(gè)還會(huì)影響其他的事件。

            ² 下一個(gè)將要執(zhí)行的方法是OnInit方法,一般這是第一個(gè)真正被使用的方法。這個(gè)方法觸發(fā)時(shí),所有頁(yè)面定義中的控件執(zhí)行初始化,這意味著所有在 頁(yè)面中定義的值應(yīng)用到相應(yīng)的控件上。不過(guò),ViewState和傳回的值還不會(huì)應(yīng)用到控件上,因此,任何被代碼或用戶(hù)改變的值還沒(méi)有被恢復(fù)到控件上。這個(gè) 方法通常是最好的創(chuàng)建、重創(chuàng)建動(dòng)態(tài)控件的好地方。
            l 恢復(fù)及加載
            ² 下一個(gè)方法, LoadPageStateFromPersistenceMedium只會(huì)在頁(yè)面被回傳的時(shí)候才會(huì)被執(zhí)行。如果因?yàn)槭褂肧ession或自定義存儲(chǔ)方 式,您修改了后面將要提到的影響ViewState保存方式的方法SavePageStateToPersistenceMedium,則這個(gè)方法需要被 重寫(xiě)。默認(rèn)的實(shí)現(xiàn)中ViewState是一種Base64格式編碼,并且被保存在頁(yè)面的隱藏域中,您可以使用這篇文章中提及的方法修改ViewState 按以上兩種方式保存。注意:這個(gè)方法并沒(méi)有真正加載ViewState到頁(yè)面或頁(yè)面控件中。

            ² 當(dāng)?shù)玫絍iewState后,下一個(gè)方法LoadViewSate,將以遞歸的方式恢復(fù)ViewState到頁(yè)面及各個(gè)頁(yè)面控件或子控件中。這 個(gè)方法執(zhí)行后,每個(gè)控件都將恢復(fù)到上一次的狀態(tài),但是用戶(hù)提交的數(shù)據(jù)還沒(méi)有應(yīng)用到控件上,因?yàn)樗麄儾皇荲iewState的一部分。這個(gè)方法主要用于恢復(fù) 您在其他事件中動(dòng)態(tài)生成的控件的值,他們的值是您手動(dòng)保存在ViewSate中,并且現(xiàn)在已經(jīng)失效。

            ² 下一個(gè)方法是ProcessPostData,這個(gè)方法也同樣是回傳的時(shí)候才會(huì)被執(zhí)行,并且不允許被重寫(xiě),這個(gè)是頁(yè)面基類(lèi)的私有方法。這個(gè)方法 通過(guò)匹配控件的名稱(chēng)恢復(fù)相應(yīng)的用戶(hù)提交的控件的值,到這一步意味著整個(gè)頁(yè)面都已經(jīng)被完全恢復(fù)了。唯一要記住的是所有動(dòng)態(tài)控件的創(chuàng)建必須在這個(gè)方法之前。這 個(gè)方法也是記錄后面的改變事件的方法。

            ² 下一個(gè)方法是OnLoad方法,通常這是用得最多的方法,因?yàn)檫@個(gè)方法是頁(yè)面生存期第一個(gè)恢復(fù)了所有值的地方。大多數(shù)代碼根據(jù)判斷 IsPostBack來(lái)決定是否重新設(shè)置控件狀態(tài)。您也可以在這個(gè)方法中調(diào)用Validate并且檢查IsValid的值。也可以在這個(gè)方法中創(chuàng)建動(dòng)態(tài)控 件,并且該控件的所有的方法都會(huì)被執(zhí)行以追上當(dāng)前頁(yè)面的狀態(tài)包括ViewSate,不過(guò)不包括回傳的值。
            l 事件處理
            ² 下一個(gè)方法還是 ProcessPostData,實(shí)際上就是前一個(gè)方法的另一次調(diào)用,它仍然是只在回傳的時(shí)候執(zhí)行并且由于是私有方法不可以被重寫(xiě)。如果您是第一次看頁(yè)面 的運(yùn)行軌跡也許會(huì)覺(jué)得這個(gè)方法有些多余。但實(shí)際上這個(gè)方法是必要的因?yàn)樵贠nLoad中創(chuàng)建的動(dòng)態(tài)控件也需要他們回傳的值。任何在這以后創(chuàng)建的控件將可以 得到他們的ViewState,但是不能再得到他們的回傳的值,并且不會(huì)觸發(fā)任何值改變事件(Change Event)。

            ² 下一個(gè)方法,RaiseChangedEvents,也是只在回傳頁(yè)面中執(zhí)行,并且也因?yàn)槭腔?lèi)的私有方法所有不能被繼承。在整個(gè)頁(yè)面生存期 中,是在這兒根據(jù)之前的ProcessPostData記錄的控件的值和提交的值是否不同來(lái)觸發(fā)值改變事件。您也許需要調(diào)用Validate或者檢查 IsValid的值。這里并沒(méi)有特別的說(shuō)明多個(gè)值改變事件的執(zhí)行先后順序。

            ² 下一個(gè)方法,RaisePostBackEvent,同樣是因?yàn)槭腔?lèi)的私有方法不能被繼承,同樣也是只在回傳頁(yè)面中執(zhí)行。除非使用了 AutoPostBack,不然這是實(shí)際提交表單事件執(zhí)行的地方,特別是按鈕或者其實(shí)使用javascript提交表單等。如果還沒(méi)有被手動(dòng)調(diào)用過(guò)并且使 用了驗(yàn)證控件,那么Validate會(huì)被調(diào)用。注意IE中有個(gè)BUG有時(shí)會(huì)允許提交但卻不觸發(fā)任何事件。

            ² 下一個(gè)方法是OnPreRender,一般這是在客戶(hù)端展現(xiàn)頁(yè)面之前改變頁(yè)面及其控件的最后一次機(jī)會(huì)。您也可以在這個(gè)方法里面創(chuàng)建動(dòng)態(tài)控件,并 且所有的方法都會(huì)被執(zhí)行以追上當(dāng)前頁(yè)面的狀態(tài)包括ViewSate,但是私有方法將不會(huì)被執(zhí)行,這意味著不會(huì)有回傳的值并且不會(huì)有事件觸發(fā)。由于IE中的 BUG,這是一個(gè)沒(méi)有事件趕上PostBack的好地方。
            l 保存及顯示
            ² 下一個(gè)方法是SaveViewState,不論是否是回傳頁(yè) 面,均會(huì)遞歸的執(zhí)行以保存頁(yè)面及其所有控件的ViewState。ViewState基本上保存所有與定義在aspx中的原始值不同的值,不管是被代碼還 是用戶(hù)所改變。注意控件值是根據(jù)他們?cè)陧?yè)面的控件樹(shù)中的位置來(lái)保存的,所以如果動(dòng)態(tài)控件后來(lái)加到了錯(cuò)誤的位置將會(huì)導(dǎo)致混亂。

            ² 下一個(gè)方法是SavePageStateToPersistenceMedium真正的保存頁(yè)面的ViewSate。這個(gè)方法隨同 LoadPageStateFromPersistenceMediumg 一起被重寫(xiě)以便保存ViewState到Session或其它自定義數(shù)據(jù),而不是用隱藏域。這對(duì)于低帶寬的用戶(hù)來(lái)說(shuō)是很有幫助的。并且對(duì)于移動(dòng)設(shè)備來(lái)說(shuō), Session是默認(rèn)設(shè)置。下面這篇文章描述了使用以上兩種方式保存ViewState的具體細(xì)節(jié)。注意在A(yíng)sp.net中有個(gè)Bug:Asp.net要 求必須提交__viewstate字段,即使是空的。

            ² 下一個(gè)方法是Render方法,該方法遞歸的創(chuàng)建并發(fā)送相應(yīng)控件的html給瀏覽器。這個(gè)方法被一些頁(yè)面模板方案重寫(xiě)以添加一些通用的頁(yè)面頭與 腳而不使用服務(wù)器控件,他們總是有一些額外的東西。注意這兒的修改只能使用純HTML,因?yàn)榭丶谶@兒已經(jīng)被生成了。您可以用 StringBuilder,StringWriter,HtmlTextWriter捕獲相應(yīng)的HTML輸出。

            ² 最后的方法是OnUnload,這個(gè)方法會(huì)調(diào)用相應(yīng)的Dispose方法。這個(gè)方法提供機(jī)會(huì)以便清空該頁(yè)面中使用的非托管資源,如關(guān)閉打開(kāi)的文 件句柄,以前打開(kāi)的數(shù)據(jù)庫(kù)連接等。注意這個(gè)方法是在頁(yè)面已經(jīng)發(fā)送到客戶(hù)端以后執(zhí)行的,所以它只有影響服務(wù)器對(duì)象,并且它不會(huì)顯示在頁(yè)面的顯示軌跡中。這就 是頁(yè)面的生存期,對(duì)于每一次請(qǐng)求都是這么運(yùn)行的。
            l 作者簡(jiǎn)介(略)

            表1:頁(yè)面事件總結(jié)


            方法回傳控件


            ConstructorAlwaysAll
            AddParsedSubObjectAlwaysAll
            DeterminePostBackModeAlwaysPage
            OnInitAlwaysAll


            LoadPageStateFromPersistenceMediumPostBackPage
            LoadViewStatePostBackAll
            ProcessPostData1PostBackPage
            OnLoadAlwaysAll


            ProcessPostData2PostBackPage
            RaiseChangedEventsPostBackPage
            RaisePostBackEventPostBackPage
            OnPreRenderAlwaysAll


            SaveViewStateAlwaysAll
            SavePageStateToPersistenceMediumAlwaysPage
            RenderAlwaysAll
            OnUnloadAlwaysAll

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

            Feedback

            # re: asp.net 頁(yè)面事件:順序與回傳[未登錄](méi) 2015-06-01 12:48 1
            1212121  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            色婷婷久久综合中文久久一本| 久久久这里有精品| 国产三级久久久精品麻豆三级| 久久婷婷久久一区二区三区| 精品乱码久久久久久夜夜嗨| 7777精品伊人久久久大香线蕉| 韩国三级中文字幕hd久久精品| 久久久久国产精品嫩草影院| 亚洲AV日韩精品久久久久| 国产福利电影一区二区三区久久久久成人精品综合 | 少妇熟女久久综合网色欲| 亚洲Av无码国产情品久久| 伊人久久大香线蕉亚洲五月天| 久久精品男人影院| 无码国内精品久久人妻蜜桃| 久久久久亚洲精品男人的天堂| 99久久精品国产高清一区二区| 久久亚洲国产精品一区二区| 亚洲精品国产第一综合99久久| 久久综合中文字幕| 久久精品极品盛宴观看| 久久人人爽人人爽AV片| 久久久久四虎国产精品| 亚洲av伊人久久综合密臀性色| 一级做a爰片久久毛片看看| 国产精品gz久久久| 伊人久久综在合线亚洲2019| 久久婷婷五月综合色高清| 久久精品国产2020| 国产毛片欧美毛片久久久 | 丰满少妇高潮惨叫久久久| 伊人久久久AV老熟妇色| 97精品国产97久久久久久免费| 色欲综合久久躁天天躁| 久久久久一本毛久久久| 久久青青国产| 久久精品国产亚洲AV久| 久久久久亚洲AV成人网人人网站| 久久午夜福利无码1000合集| 精品久久久久久国产| 亚洲午夜福利精品久久|