国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ASP.NET 2.0頁面狀態(tài)持續(xù):ViewState與控件 - 51CTO.COM
    本文介紹了ASP.NET 2.0頁面狀態(tài)持續(xù)程序的實現(xiàn)過程。ASP.NET 2.0 允許您修改臨時保持頁面狀態(tài)的位置和方式。

    ASP.NET 2.0頁面狀態(tài)持續(xù)程序

    ASP.NET 控件的開發(fā)人員利用 ViewState 和控件狀態(tài)來保持瀏覽器發(fā)出的各請求之間的狀態(tài)信息。通常,該信息作為由頁面呈現(xiàn)的 HTML 標記中的隱藏字段傳送給客戶端。然后,該頁面狀態(tài)作為下一個窗體提交的一部分傳回服務(wù)器并還原給控件或頁面。即使瀏覽器使用 HTTP 協(xié)議(該協(xié)議定義為無狀態(tài)),但利用臨時存儲狀態(tài)信息的功能,控件的開發(fā)人員能夠輕松地提供更豐富的應(yīng)用程序體驗。

    ASP.NET 2.0 允許您修改臨時保持頁面狀態(tài)的位置和方式。在某些情況下,避免在客戶端與服務(wù)器之間往返傳送數(shù)據(jù)可能更為可取。ASP.NET 2.0 提供的兩個頁面狀態(tài)持續(xù)程序分別是 HiddenFieldPageState 持續(xù)程序(我們已提到過)和 SessionPageStatePersister。SessionPageStatePersister 利用與瀏覽器會話相關(guān)的服務(wù)器會話存儲數(shù)據(jù)。使用 SessionPageStatePersister 有正反兩個方面。對于發(fā)送到(自)瀏覽器的頁面而言,使用會話(而非隱藏字段)可以避免其大小的增加。在許多情況中,頁面狀態(tài)是全部標記的一個重要部分。然而,在會話中存儲數(shù)據(jù)將占用寶貴的服務(wù)器資源。此外,隱藏字段不像會話那樣具有相關(guān)的超時。您可以配置一個應(yīng)用程序,以便將會話保持到后端數(shù)據(jù)庫,并避免將負載直接加到 Web 服務(wù)器。這也將擴展至 Web 場方案。

    要使用除默認持續(xù)程序之外的持續(xù)程序,需要重寫該頁的 PageStatePersister 屬性,并返回另一個持續(xù)程序的一個實例。首先,下面的一個簡單頁面只使用大量數(shù)字填充一個 ArrayList,然后將它綁定到一個 GridView 控件。

            
    1. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
    2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    3. < script runat="server"> 
    4.     protected override PageStatePersister PageStatePersister {  
    5.         get {  
    6.             return new SessionPageStatePersister(this);  
    7.         }  
    8.     }  
    9.     protected override void OnLoad(EventArgs e) {  
    10.         base.OnLoad(e);  
    11.         if (!IsPostBack) {  
    12.             ArrayList list = new ArrayList();  
    13.             for (int i = 0; i <  1000; i++)  
    14.             {  
    15.                 list.Add(Convert.ToString(i));  
    16.             }  
    17.             GridView1.DataSource = list;  
    18.             GridView1.DataBind();        
    19.         }  
    20.     }  
    21. < /script> 
    22. < html  > 
    23. < head id="Head1" runat="server"> 
    24.     < title>Untitled Page< /title> 
    25. < /head> 
    26. < body> 
    27.     < form id="form1" runat="server"> 
    28.     < div> 
    29.         < asp:GridView ID="GridView1" runat="server" />          
    30.         < asp:Button ID="Button1" runat="server" Text="Submit" />< /div> 
    31.     < /form> 
    32. < /body> 
    33. < /html> 

    當查看該頁面所呈現(xiàn)的 HTML 時,您會看到一個用于傳送 ViewState 的較大隱藏字段。

            
    1. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
    2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    3. < html  > 
    4. < head>< title> 
    5.    Untitled Page  
    6. < /title>< /head> 
    7. < body> 
    8.     < form name="form1" method="post" action="default2.aspx" id="form1"> 
    9. < div> 
    10. < input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"   
    11. value="/wEPDwUKMTQ0MDQzNjk2Ng9kFgICBA9kFgICAQ88KwANAgAPFgYeC18hRGF0YUJv  
    12. dW5kZx4JUGFnZUNvdW50AgEeC18hSXRlbUNvdW50AhRkDBQrAAEWBh4EVHlwZRkrAh4ETmF  
    13. tZQUESXRlbR4JRGF0YUZpZWxkBQEhFgJmD2QWKgIBD2QWAmYPDxYCHgRUZXh0BQEwZGQCAg  
    14. 9kFgJmDw8WAh8GBQExZGQCAw9kFgJmDw8WAh8GBQEyZGQCBA9kFgJmDw8WAh8GBQEzZGQCB  
    15. Q9kFgJmDw8WAh8GBQE0ZGQCBg9kFgJmDw8WAh8GBQE1ZGQCBw9kFgJmDw8WAh8GBQE2ZGQC  
    16. CA9kFgJmDw8WAh8GBQE3ZGQCCQ9kFgJmDw8WAh8GBQE4ZGQCCg9kFgJmDw8WAh8GBQE5ZGQ  
    17. CCw9kFgJmDw8WAh8GBQIxMGRkAgwPZBYCZg8PFgIfBgUCMTFkZAIND2QWAmYPDxYCHwYFAj  
    18. EyZGQCDg9kFgJmDw8WAh8GBQIxM2RkAg8PZBYCZg8PFgIfBgUCMTRkZAIQD2QWAmYPDxYCH  
    19. wYFAjE1ZGQCEQ9kFgJmDw8WAh8GBQIxNmRkAhIPZBYCZg8PFgIfBgUCMTdkZAITD2QWAmYP  
    20. DxYCHwYFAjE4ZGQCFA9kFgJmDw8WAh8GBQIxOWRkAhUPDxYCHgdWaXNpYmxlaGRkGAEFCUd  
    21. yaWRWaWV3MQ9nZMhHZ3iQZp62S8IR8fTJ5ZL42ira" /> 
    22. < /div> 
    23. ...  

    當我們向 PageStatePersister 屬性添加重寫并使用內(nèi)置 SessionPageStatePersister 時,該頁面的行為保持不變,但是用于大量狀態(tài)數(shù)據(jù)的存儲將從隱藏字段轉(zhuǎn)換為會話狀態(tài)。

            
    1. protected override PageStatePersister PageStatePersister  
    2. {  
    3.     get 
    4.     {  
    5.         return new SessionPageStatePersister(this);  
    6.     }  
    7. }  

    請注意,在該頁面的源代碼中,隱藏字段值要小得多,但并沒有完全消失。ASP.NET 仍將在頁面輸出中傳送一些最小的數(shù)據(jù)集。

            
    1. < input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"   
    2. value="/wEPaA8FDzhjNzkyNTMzNjE1YWEyNxgBBQlHcmlkVmlldzEPZ2QZw  
    3. 44JLJFcglwRl9TiNliE82yAuQ==" /> 

    ASP.NET 2.0頁面狀態(tài)持續(xù)的其他方案

    在某些方案中,您可能只想將與之類似的代碼添加到一個較小的頁面集中,因此添加與之類似的簡單重寫也許是可接受的。當您希望一個完整的應(yīng)用程序或一個較大的頁面集擁有該行為時,需要一個用于控制它的更集中化的方式。有幾種方式可以實現(xiàn)這一點。我們可以將創(chuàng)建該持續(xù)程序的代碼移動到從頁面繼承的類中:

            
    1. using System;  
    2. using System.Data;  
    3. using System.Configuration;  
    4. using System.Web;  
    5. using System.Web.Security;  
    6. using System.Web.UI;  
    7. using System.Web.UI.WebControls;  
    8. using System.Web.UI.WebControls.WebParts;  
    9. using System.Web.UI.HtmlControls;  
    10. public class PagePersisterBasePage : Page  
    11. {  
    12.     public PagePersisterBasePage()   {  
    13.     }  
    14.     protected override PageStatePersister PageStatePersister {  
    15.         get {  
    16.             return new SessionPageStatePersister(this);  
    17.         }  
    18.     }  
    19. }   

    ASP.NET 2.0 使您能夠使用“Inherits”頁面指令指定頁面的基類型。然后,ASP.NET 為該頁面生成的代碼從該基頁面繼承,而且無需在每個頁面中復(fù)制該代碼。

            
    1. < %@ Page Language="C#"  Inherits="PagePersisterBasePage" %> 

    此外,配置選項使我們能夠設(shè)置頁面位置,以便所有頁面使用單一的基頁面類型。在該 web.config 頁中,我們設(shè)置了 pageBaseType,并且無需將 Inherits 屬性添加到任何頁面來獲取自定義的 PageStatePersister 行為。

            
    1. < ?xml version="1.0"?> 
    2. < configuration> 
    3.    < system.web> 
    4.     < pages pageBaseType="PagePersisterBasePage" /> 
    5.    < /system.web> 
    6. < /configuration> 

    更改 PageStatePersister 并不是一件輕松的事。請仔細考慮您的應(yīng)用程序和部署。盡管在隱藏字段中往返傳送 ViewState 存在相關(guān)的開銷,但是要將狀態(tài)保持在那里,則需要有直接的服務(wù)器資源消耗。通過前面的示例您可以看到,可以插入自定義持續(xù)程序以便將狀態(tài)存儲在其他地方,例如,后端數(shù)據(jù)庫或 Web 場共享的狀態(tài)服務(wù)。此外,正如我們所演示的,您可以集中控制應(yīng)用程序的行為,或者按頁在頁面上進行控制。

    以上就是ASP.NET 2.0頁面狀態(tài)持續(xù)程序的實現(xiàn)原理。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ViewState與Session
ASP.NET:掌握Web窗體的生命周期與狀態(tài)管理
ASP.NET頁面——視圖狀態(tài)
緩存技術(shù)
ASP.NET狀態(tài)管理的總結(jié)
介紹緩存的基本概念和常用的緩存技術(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服