乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ASP.NET:掌握Web窗體的生命周期與狀態(tài)管理

       liuqg 2006-03-11
      如果你具有使用 Active Server Pages (ASP) 的經(jīng)驗,你將認識到 ASP 是線性處理模型。ASP 頁是按從上到下的順序處理的。ASP 代碼和靜態(tài) HTML 的每一行都按其在文件中的顯示順序進行處理。在往返行程中用戶操作導致頁被發(fā)送到服務器。因為此操作導致往返行程,所以服務器必須重新創(chuàng)建該頁。在重新創(chuàng)建該頁后,將通過與以前相同的從上到下的順序?qū)υ擁撨M行處理,因此,該頁未表現(xiàn)出真正的事件驅(qū)動行為。若要創(chuàng)建事件驅(qū)動體驗,你需要顯式設計它。此外,你必須在最基本的級別上顯式維護頁和控件狀態(tài)。此模型限制了可以組合的用戶界面的豐富程度,并且此模型增加了需要支持它的代碼的復雜性。

        與此相比,傳統(tǒng) Visual Basic 應用程序中的事件驅(qū)動模型包含可編程的元素,這些元素可被初始化并在窗體上顯示。用戶與這些元素進行交互,而這又導致引發(fā)調(diào)用事件處理程序的事件。此模型支持真正的事件驅(qū)動行為,這在設計上極大拓寬了可以組合的用戶界面的豐富程度,并且降低了需要支持它的代碼的復雜性。

        ASP.NET 通過模擬事件驅(qū)動模型的行為代替了 ASP 的線性處理模型。提供 ASP.NET 頁框架以隱式地為你建立事件和事件處理程序的關聯(lián)。利用該頁框架,你可以很容易地創(chuàng)建響應用戶操作的用戶界面。

        首先,我們必須先了解一下Web窗體的生命周期,才能更好的了解Web窗體的狀態(tài)管理。

        一個Web窗體的生命周期類似于在服務器中運行的Web進程的生命周期。一個Web窗體從實例化分配內(nèi)存空間到處理結束釋放內(nèi)存,一般經(jīng)歷下面4個步驟:初始化、頁面裝載、事件處理和資源清理。

       ?。?)頁面初始化

        當頁面被初始化時,發(fā)生第一個事件Page_Init。系統(tǒng)會執(zhí)行創(chuàng)建和設置一個例示所需要的所有初始化步驟。

       ?。?)頁面裝載

        頁面裝載在初始化之后,所發(fā)生的事件叫做 Page_Load,它的用途如下:

        根據(jù) Page.IsPostBack 屬性檢查頁面是不是第一次被處理;

        第一次處理頁面時執(zhí)行數(shù)據(jù)捆綁,或者在以后的循環(huán)過程中重新判斷數(shù)據(jù)捆綁表達式;

        讀取和更新控件屬性;

        恢復在保存步驟中所保存的前一個客戶請求的狀態(tài);

        (3)事件處理

        Web窗體上的每個動作都激活一個到達服務器的事件。一個Web窗體有兩個視圖:一個客戶視圖和一個服務器視圖。所有的數(shù)據(jù)處理都在服務器上進行。當通過點擊鼠標或其它方法引起一個事件時,事件就到達服務器并返回相應的數(shù)據(jù)。

       ?。?)資源清理

        最后一步發(fā)生于一個窗體完成了它的任務并且準備卸載的時候,這時激活Page_Unload事件,完成最后的資源清理工作,比如:關閉文件,關閉數(shù)據(jù)庫連接,丟棄對象。

        我們知道基于Web的訪問方式是斷開式的,Web頁面是無狀態(tài)性的。而于ASP中的線性驅(qū)動方式不同的是ASP.NET采用的是事件驅(qū)動模式,那么 ,Web窗體是怎么樣做到ASP.NET頁面狀態(tài)的維護的呢?在ASP.NET中引入了一個概念:View State,從而用View State來保存頁面的狀態(tài)信息。

        除了第一次的訪問請求是有基類生成以外,以后每次客戶端的回傳都是根據(jù)客戶端傳來的頁面狀態(tài)來重新創(chuàng)建頁面。而頁面的各個狀態(tài)信息就保存在客戶端頁面源文件的隱藏字段<input type="hidden" name="__VIEWSTATE" value=""/>中,我們可以通過瀏覽器查看到它,value的值就是經(jīng)過加密的頁面狀態(tài)信息。服務器根據(jù)value值進行窗體的再現(xiàn),然后在窗體的事件處理階段進行執(zhí)行響應的事件過程,然后把執(zhí)行結果返回到客戶端,并且改變Web窗體的狀態(tài)值,并回寫到value值中。最后到達資源清理階段。整個過程就是一個Web窗體的生命周期,同時也完成了頁面狀態(tài)的管理。

        下面這個實例演示了ASP.NET頁面框架是如何維護頁面狀態(tài)的。所有代碼如下:

        <%@ Page Language="VB" %>
        <script runat="server">
           Sub Button1_Click(sender As Object, e As EventArgs)
          ‘使viewstate(“value”)的值增1
          viewstate("value") += 1
                Label1.Text = "這是第" & Str(viewstate("value")) & "點擊按鈕"
        End Sub
        sub page_Load(sender As Object, e As EventArgs)
        ‘判斷是否為第一次處理該頁面
        ‘如果是則使viewstate類保存鍵value的值為0
           If Not Page.IsPostBack Then
                    viewstate("value") = 0
                    Label1.Text = "這是第" & Str(viewstate("value")) & "點擊按鈕"
                End If
        end sub
        </script>
        <html>
        <head>
            <title>頁面狀態(tài)管理</title>
        </head>
        <body ms_positioning="GridLayout">
            <form id="Form1" method="post" runat="server">
                <asp:Label id="Label1" runat="server" width="176px"></asp:Label>
                <br />
                <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="點擊累加"></asp:Button>
            </form>
        </body>
        </html>

        保存為viewstate.aspx,運行結果如圖4.9所示。

        

      ASP.NET:掌握Web窗體的生命周期與狀態(tài)管理
      圖4.9 點擊3次按鈕之后

        在客戶端的瀏覽器中,我們查看源文件,可以查看到的隱藏字段的值為:
        <input type="hidden" name="__VIEWSTATE" value="dDwtOTk1MjE0NDA4O3Q8cDxsPHZhbHVlOz47bDxpPDM+Oz4+O2w8aTwxP
      js+O2w8dDw7bDxpPDE+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPOi/meaYr+esrCAz54K5
      5Ye75oyJ6ZKuOz4+Oz47Oz47Pj47Pj47PmLc5pTevWJok9DSup0E5RUygUMi" />
        而整個頁面的狀態(tài)信息就其中

      作者:李宗民  來源:IT168  (責任編輯:webjx) 

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多