多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

aspnet教程

  • ASP.NET 教程
  • ASP.NET 簡介
  • ASP.NET Razor

    ASP.NET MVC

    ASP.NET 編程指南

    ASP.NET 管理狀態(tài)

    閱讀 (2477)

    管理狀態(tài)

    超文本傳輸協(xié)議(HTTP)是一種無狀態(tài)協(xié)議。當(dāng)客戶端從服務(wù)器斷開連接時,ASP.NET 引擎將丟棄頁面對象。這樣一來,每個 Web 應(yīng)用程序能夠擴(kuò)展到同時用于大量請求,但是不會耗盡服務(wù)器內(nèi)存。

    然而,需要有一些技術(shù)來存儲各個請求之間的信息并在需要時取回。這個信息則稱為狀態(tài),即所有控件的當(dāng)前值和在當(dāng)前會話中當(dāng)前用戶使用的變量。

    ASP.NET 管理四種狀態(tài):

    • 視圖狀態(tài)
    • 控制狀態(tài)
    • 會話狀態(tài)
    • 應(yīng)用程序狀態(tài)

    視圖狀態(tài)

    視圖狀態(tài)是頁面及其所有控件的狀態(tài)。它通過 ASP.NET 框架的反饋保持不變。

    當(dāng)一個頁面被發(fā)送回客戶端,這些頁面變化的屬性及其控件是確定的,并存儲在名為 _VIEWSTATE 的一個隱藏輸入字段的值內(nèi)。當(dāng)頁面被再次回發(fā)時,_VIEWSTATE 字段隨 HTTP 請求被發(fā)送到服務(wù)器。

    視圖狀態(tài)可以對以下內(nèi)容啟用或者禁用:

    • 整個應(yīng)用程序:設(shè)置 web.config 文件中 部分的 EnableViewState 屬性。
    • 一個頁面:設(shè)置頁面指令的 EnableViewState 屬性為 <%@ Page Language="C#" EnableViewState="false" %>
    • 一個控件:設(shè)置控件 .EnableViewState 屬性。

    它通過使用視圖狀態(tài)對象,該對象是由被一組視圖狀態(tài)項目定義的 StateBag 類別定義的。該 StateBag 是一種數(shù)據(jù)結(jié)構(gòu),包含屬性值對并被存儲為與對象相關(guān)聯(lián)的字符串。

    StateBag 類具有以下屬性:

    屬性描述
    Item(name)具有指定名稱的視圖狀態(tài)的值,是 StateBag 的默認(rèn)屬性。
    Count狀態(tài)集合中的項目名稱。
    Keys集合中所有項目的密鑰集合。
    Values集合中所有項目的值的集合。

    StateBag 類具有以下方法:

    方法描述
    Add(name, value)添加一個項目到視圖狀態(tài)集合,更新現(xiàn)有項目。
    Clear移除集合中所有項目。
    Equals(Object)確定指定的對象是否等于當(dāng)前對象。
    Finalize允許釋放資源并執(zhí)行其他清理操作。
    GetEnumerator返回存儲在 StateBag 對象中重復(fù)的 StateItem 對象的密鑰/值對的計數(shù)器。
    GetType獲取當(dāng)前實例的類型。
    IsItemDirty檢查存儲在 StateBag 對象以確認(rèn)其是否已被修改。
    Remove(name)移除制定項目。
    SetDirty設(shè)置 StateBag 對象的狀態(tài)以及每個由其包含的 StateItem 對象的 Dirty 屬性。
    SetItemDirty為在 StateBag 對象中的指定 StateItem 對象設(shè)置 Dirty 屬性。
    ToString返回代表狀態(tài)包對象的字符串。

    實例

    以下實例說明了存儲視圖狀態(tài)的字符串的概念。

    讓我們保持一個計數(shù)器,通過點擊頁面上的一個按鈕,該計數(shù)器能夠在每次頁面被調(diào)回時遞增。標(biāo)簽控件顯示計數(shù)器的值。

    標(biāo)記文件代碼如下所示:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="statedemo._Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
       <head runat="server">
          <title>
             Untitled Page
          </title>
       </head>
    
       <body>
          <form id="form1" runat="server">
    
             <div>
                <h3>View State demo</h3>
    
                Page Counter:
    
                <asp:Label ID="lblCounter" runat="server" />
                <asp:Button ID="btnIncrement" runat="server" Text="Add Count" onclick="btnIncrement_Click" />
             </div>
    
          </form>
       </body>
    
    </html>

    該實例的后臺代碼文件如下所示:

    public partial class _Default : System.Web.UI.Page
    {
       public int counter
       {
          get
          {
             if (ViewState["pcounter"] != null)
             {
                return ((int)ViewState["pcounter"]);
             }
             else
             {
                return 0;
             }
          }
    
          set
          {
             ViewState["pcounter"] = value;
          }
       }
    
       protected void Page_Load(object sender, EventArgs e)
       {
          lblCounter.Text = counter.ToString();
          counter++;
       }
    }

    它將會生成以下結(jié)果:

    image

    控制狀態(tài)

    控制狀態(tài)不能被直接修改,存取或禁用。

    會話狀態(tài)

    當(dāng)用戶連接到 ASP.NET 網(wǎng)站,一個新的會話對象將被創(chuàng)建。當(dāng)會話狀態(tài)開啟時,新的會話狀態(tài)會為每一個新的請求而創(chuàng)建。這種會話狀態(tài)對象會成為運行環(huán)境中的一部分并可通過頁面使用。

    會話狀態(tài)通常用于存儲應(yīng)用程序數(shù)據(jù),比如詳細(xì)目錄,供應(yīng)商清單,客戶記錄或購物車。它可以存儲用戶的信息及其偏好信息,并保存用戶未決定的路徑。

    會話由 120 位的 SessionID 識別和跟蹤,從客戶端傳遞到服務(wù)器并且作為 cookie 或修改的 URL 回傳。SessionID 是全球唯一的,隨機(jī)的。

    會話狀態(tài)對象由 HttpSessionState 類創(chuàng)建,它定義會話狀態(tài)項集合。

    HttpSessionState 類具有以下屬性:

    屬性描述
    SessionID唯一的會話標(biāo)識符。
    Item(name)具有指定名稱的會話狀態(tài)項的值,是 HttpSessionState 類的默認(rèn)屬性。
    Count會話狀態(tài)集合中項的數(shù)量。
    TimeOut獲取和設(shè)置時間量,幾分鐘內(nèi),在供應(yīng)商停止會話狀態(tài)前在請求間被允許。

    HttpSessionState 類有以下方法:

    方法描述
    Add(name, value)添加新的項到會話狀態(tài)集合。
    Clear移除會話狀態(tài)集合中所有項。
    Remove(name)移除會話狀態(tài)集合中的指定項。
    RemoveAll移除會話狀態(tài)集合中所有密鑰和值。
    RemoveAt從會話狀態(tài)集合中刪除指定索引處的項。

    會話狀態(tài)對象是一個名 - 值對,它可以從會話狀態(tài)對象中存儲和檢索信息。同樣地,您可以使用以下代碼:

    void StoreSessionInfo()
    {
       String fromuser = TextBox1.Text;
       Session["fromuser"] = fromuser;
    }
    
    void RetrieveSessionInfo()
    {
       String fromuser = Session["fromuser"];
       Label1.Text = fromuser;
    }

    以上代碼只存儲在會話詞典對象中的字符串,但是,它可以存儲所有原始數(shù)據(jù)類型和由原始數(shù)據(jù)類型組成的陣列,DataSet, DataTable, HashTable, 和圖像對象,以及繼承 ISerializable 對象的任意用戶定義的類。

    實例

    以下實例說明了存儲會話狀態(tài)的概念。在頁面上有兩個按鈕:輸入字符串的文本框按鈕和顯示從最后一個會話中存儲的文本的標(biāo)簽按鈕。標(biāo)記文件代碼如下所示:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
       <head runat="server">
          <title>
             Untitled Page
          </title>
       </head>
    
       <body>
          <form id="form1" runat="server">
             <div>
                &nbsp; &nbsp; &nbsp;
    
                <table style="width: 568px; height: 103px">
    
                   <tr>
                      <td style="width: 209px">
                         <asp:Label ID="lblstr" runat="server" Text="Enter a String"  style="width:94px">
                         </asp:Label>
                      </td>
    
                      <td style="width: 317px">
                         <asp:TextBox ID="txtstr" runat="server" style="width:227px">
                         </asp:TextBox>
                      </td>
                   </tr>
    
                   <tr>
                      <td style="width: 209px"> </td>
                      <td style="width: 317px"> </td>
                   </tr>
    
                   <tr>
                      <td style="width: 209px">
                         <asp:Button ID="btnnrm" runat="server" 
                            Text="No action button" style="width:128px" />
                      </td>
    
                      <td style="width: 317px">
                         <asp:Button ID="btnstr" runat="server" 
                            OnClick="btnstr_Click" Text="Submit the String" />
                      </td> 
                   </tr>
    
                   <tr>
                      <td style="width: 209px">  </td>
    
                      <td style="width: 317px">  </td>  
                   </tr>
    
                   <tr>
                      <td style="width: 209px">
                         <asp:Label ID="lblsession" runat="server"  style="width:231px"  >
                         </asp:Label>
                      </td>
    
                      <td style="width: 317px">  </td>
                   </tr>
    
                   <tr>
                      <td style="width: 209px">
                         <asp:Label ID="lblshstr" runat="server">
                         </asp:Label>
                      </td>
    
                      <td style="width: 317px">  </td>
                   </tr>
    
                </table>
    
             </div>
          </form>
       </body>
    </html>

    在設(shè)計視圖中應(yīng)有如下顯示:

    image

    后臺代碼如下:

    public partial class _Default : System.Web.UI.Page 
    {
       String mystr;
    
       protected void Page_Load(object sender, EventArgs e)
       {
          this.lblshstr.Text = this.mystr;
          this.lblsession.Text = (String)this.Session["str"];
       }
    
       protected void btnstr_Click(object sender, EventArgs e)
       {
          this.mystr = this.txtstr.Text;
          this.Session["str"] = this.txtstr.Text;
          this.lblshstr.Text = this.mystr;
          this.lblsession.Text = (String)this.Session["str"];
       }
    }

    執(zhí)行文件并觀察其如何運行:

    image

    應(yīng)用程序狀態(tài)

    ASP.NET 應(yīng)用程序是在 Web 服務(wù)器上所有網(wǎng)頁,代碼和單個虛擬目錄的其他文件的集合。當(dāng)信息被存儲在應(yīng)用程序狀態(tài),它可以供所有用戶使用。

    為了提供應(yīng)用程序狀態(tài)的使用,ASP.NET 從 HttpApplicationState 類中為每個應(yīng)用程序創(chuàng)建一個應(yīng)用程序狀態(tài)對象,并將該對象存儲在服務(wù)器內(nèi)存中。該對象是由類文件 global.asax 表示。

    應(yīng)用程序狀態(tài)主要被用于存儲計數(shù)器,其他統(tǒng)計數(shù)據(jù)及稅率,折扣率等所有應(yīng)用程序數(shù)據(jù),并存儲用戶訪問網(wǎng)站的路徑。

    HttpApplicationState 類具有以下屬性:

    屬性描述
    Item(name)具有指定名稱的應(yīng)用程序項的值,是 HttpApplicationState 的默認(rèn)屬性。
    Count應(yīng)用程序狀態(tài)集合中項的數(shù)量。

    HttpApplicationState 類具有以下方法:

    方法描述
    Add(name, value)添加新的項目到應(yīng)用程序狀態(tài)集合。
    Clear移除應(yīng)用程序狀態(tài)集合中的所有項。
    Remove(name)移除應(yīng)用程序狀態(tài)集合中的指定項。
    RemoveAll移除一個 HttpApplicationState 集合中所有對象。
    RemoveAt移除從由索引找到的集合中的一個 HttpApplicationState 對象。
    Lock()鎖定應(yīng)用程序狀態(tài)集合以便只有當(dāng)前用戶可以訪問。
    Unlock()解鎖應(yīng)用程序狀態(tài)集合以便所有用戶可以訪問。

    應(yīng)用程序狀態(tài)的數(shù)據(jù)通常是由為事件編寫的處理程序維護(hù):

    • 應(yīng)用程序開啟
    • 應(yīng)用程序結(jié)束
    • 應(yīng)用程序錯誤
    • 會話開始
    • 會話結(jié)束

    以下代碼片段展示了用于存儲應(yīng)用程序狀態(tài)信息的基本語法:

    Void Application_Start(object sender, EventArgs e)
    {
       Application["startMessage"] = "The application has started.";
    }
    
    Void Application_End(object sender, EventArgs e)
    {
       Application["endtMessage"] = "The application has ended.";
    }
    關(guān)閉
    程序員人生
    主站蜘蛛池模板: 高清欧美一区二区免费影视 | 日本一级级特黄特色大片 | 久久极品 | 国产毛片一级国语版 | 黑人插入 | 99精品国产一区二区三区 | 成人欧美一区二区三区视频不卡 | porn日本xxx护士 | 免费日韩精品 | 岛国片在线播放 | 国产精品爱久久久久久久 | 日韩一区视频在线 | 性欧美video另类hd高清 | 欧美a级v片不卡在线观看 | 久操免费在线 | 中国a级淫片免费播放 | 欧美一级日韩 | 中文字幕精品在线视频 | 日韩欧美极品 | 日韩欧美精品中文字幕 | 亚洲图区综合 | 欧美午夜视频 | 久久一区二区三区免费播放 | 国产欧美日韩综合二区三区 | 叼嘿视频在线观看免费 | 欧美videos喝尿 | 亚洲都市春色系列小说类型 | 女人18特级一级毛片免费视频 | 永久在线观看www免费视频 | 9久热久爱免费精品视频在线观看 | 性欧美高清久久久久久久 | 国产欧美日韩在线一区二区不卡 | 亚洲精品久久久久午夜三 | 欧美日韩亚洲国内综合网俺 | 最近最新中文字幕高清免费 | 娇小性色xxxxx | 亚洲综合视频在线观看 | 亚洲高清视频一区 | 69热在线观看 | 天天躁夜夜 | 校园春色综合网 |