文章編號: 308378 - 上次校閱: 2012年5月17日 - 版次: 1.0

如何執行片段 asp 快取。NET 中使用視覺化的 C#。NET

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文曾發行於 CHT308378

在此頁中

全部展開 | 全部摺疊

結論

本文將示範如何實作在 ASP 中的片段快取。NET 中。快取片段快取不會實際限制網頁表單的程式碼片段直接 ;片段快取是指在 Web 表單內的個別使用者控制項 (.ascx) 的快取。每個使用者控制項可能擁有獨立的快取持續時間的如何套用快取行為的實作。在這份文件中的程式碼範例說明如何達成這項功能。

片段快取時要快取網頁的子集。導覽列、 頁首和頁尾是片段快取的理想對象。

需求

  • Microsoft Windows 2000
  • Microsoft 網際網路資訊伺服器 (IIS)
  • 安裝。NET Framework
  • ASP。NET

建立 ASP。NET Web 應用程式使用 C#。NET

下列的步驟將告訴您如何建立新的 ASP。NET Web 應用程式中,名為 FragmentCache。
  1. 請開啟 Microsoft Visual Studio。NET
  2. 在 [檔案] 功能表中,指向 [新增],然後按一下 [專案
  3. 在 [新增專案] 對話方塊中,按一下 [專案類型] 下的 [ Visual C# 專案,然後按一下ASP。NET Web 應用程式範本內
  4. 在 [名稱] 方塊中,輸入 FragmentCache.在 [位置] 方塊中,選取適當的伺服器。如果您使用本機伺服器,您就可以將伺服器名稱為 http://localhost。

建立使用者控制項

本章節提供範例程式碼,您可以使用這份文件中的每個使用者控制項的說明。您可以複製並貼到相關聯的.ascx 檔案和程式碼後置網頁的範例程式碼,如所述。

1 (FragmentCtrl1.ascx) 的使用者控制項

下列的使用者控制項 FragmentCtrl1.ascx,並不困難。FragmentCtrl1.ascx 寫出時間項目的快取項目就會發生。就如同所有的本文中所建立的控制項,讓控制項更容易在 run time 區分設定和相關的行為,在稍後的章節中提供基本的說明。
  1. 在 Visual Studio。NET 中,建立新的使用者控制項,如下所示:
    1. 在 [方案總管專案節點上按一下滑鼠右鍵,指向 [新增],然後按一下 加入 Web 使用者控制項.
    2. 命名 FragmentCtrl1.ascx,該控制項,然後按一下 [開啟
  2. 請確定已選取 [設計] 索引標籤。按一下和 Web Form標籤控制項從工具箱] 中的Web Form區段拖放到頁面的標籤控制項。
  3. 按一下標籤控制項。在 [屬性] 窗格的 Visual Studio。NET 整合式的開發環境 (IDE) 中,型別 CacheEntryTime 在 [識別碼] 屬性和留下空白的 [文字] 屬性。
  4. 切換至 [HTML] 檢視中,並將下列的@ OutputCache指示詞加入至頁面的頂端:
    <%@ OutputCache Duration="40" VaryByParam="none"%>
    					
  5. .Ascx 檔案中,按一下滑鼠右鍵,然後按一下 [檢視程式碼],以顯示程式碼後置網頁原始檔。
  6. 將下列程式碼加入至Page_Load事件,設定CacheEntryTime標籤的Text屬性:
    private void Page_Load(object sender, System.EventArgs e)
          {
             CacheEntryTime.Text ="FragmentCtrl1: " +  DateTime.Now.TimeOfDay.ToString();
          }
    					

2 (FragmentCtrl2.ascx) 的使用者控制項

雖然您可以使用不同的快取期間,以顯示數個使用者控制項可以在同一個頁面中擁有獨立的行為產生的第一個控制項的另一個版本,這個區段會使第二個控制項,也就是 FragmentCtrl2.ascx,更增添趣味。FragmentCtrl2.ascx 用來介紹的VaryByControl屬性。VaryByControl可讓不同的快取項目設成可根據指定的控制項的值上。這項功能會清楚得多執行階段以進行下一節。
  1. 在 Visual Studio。NET 中,建立新的使用者控制項,如下所示:
    1. 在 [方案總管專案節點上按一下滑鼠右鍵,指向 [新增],然後按一下 加入 Web 使用者控制項.
    2. 命名 FragmentCtrl2.ascx,該控制項,然後按一下 [開啟
  2. 請確定已選取 [設計] 索引標籤。按一下並拖曳標籤的 Web Form 控制項從工具箱] 中的Web Form區段拖然後標籤控制項放在網頁。
  3. 按一下標籤控制項。在 [屬性] 窗格中,輸入 CacheEntryTime 在 [識別碼] 屬性和留下空白的 [文字] 屬性。
  4. 直接標籤控制項之後,將游標的位置,然後按下 ENTER,移至頁面中的下一行。
  5. 按一下並將RadioButtonList的 Web Form] 控制項從工具箱] 中的Web Form區段拖放到網頁。RadioButtonList控制項應該Label控制項後,單獨出現在行。
  6. 按一下 [ RadioButtonList ] 控制項。在 [屬性] 窗格中,輸入 MyRadioButtonList 在 [識別碼] 屬性中。
  7. 在 [屬性] 窗格中,找出MyRadioButtonList控制項的 [ Items ] 屬性,按一下集合,,然後按一下出現集合旁的省略號 (...) 按鈕。
  8. 在 [ ListItem 集合編輯器] 視窗中,將ListItem成員加入,如下所示:
    1. 在 [成員] 下按一下 [新增]。
    2. 在 [ ListItem屬性] 區段中,將文字設定為 [ ],然後選定為 True
    3. 在 [成員] 下按一下 [新增一次。
    4. 在 [ ListItem屬性] 區段中,將文字設定為 [],選取設為False
    5. 在 [成員] 下按一下 [新增一次。
    6. 在 [ ListItem屬性] 區段中,將文字設定為 [或許,並且設定選取為 False
    7. 按一下[確定]以返回 [設計] 檢視中的.ascx 檔。顯示RadioButtonList控制項內所包含的三個選項按鈕的明: [是]、 [],以及可能
  9. 直接在RadioButtonList控制項,並按下 ENTER,移至頁面中的下一行後的資料指標的位置。
  10. 按一下並拖曳網頁表單] 按鈕] 控制項從工具箱] 中的Web Form區段拖放到網頁。[ Button ] 控制項應該RadioButtonList控制項之後,單獨出現在行。
  11. 按一下 [按鈕] 控制項。在 [屬性] 窗格中,輸入 送出 在 [文字] 屬性中。
  12. 切換至 [HTML] 檢視中,並將下列的@ OutputCache指示詞加入至頁面的頂端:
    <%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="MyRadioButtonList"%>
    					
  13. .Ascx 檔案中,按一下滑鼠右鍵,然後按一下 [檢視程式碼],以顯示程式碼後置網頁原始檔。
  14. 將下列程式碼加入至Page_Load事件,設定CacheEntryTime標籤的Text屬性:
    private void Page_Load(object sender, System.EventArgs e)
          {
             CacheEntryTime.Text = "FragmentCtrl2: " + DateTime.Now.TimeOfDay.ToString();
          }
    					

建立 Web 表單,以包含使用者控制項

您現在可以建立 Web 表單 (.aspx),以包含新開發的使用者控制項。若要建立 Web 表單,請依照下列步驟執行:
  1. 加入新的 Web Form,名為 FragmentCaching.aspx Visual Studio 中的專案。NET,如下所示:
    1. 在 [方案總管專案節點上按一下滑鼠右鍵,指向 [新增],然後按一下 新增 Web 表單.
    2. 命名 Web 表單 FragmentCaching.aspx 中,並再按一下 [開啟
  2. 請確定已選取 [設計] 索引標籤。按一下並拖曳標籤的 Web Form 控制項從工具箱] 中的Web Form區段拖放到網頁。
  3. 按一下標籤控制項。在 [屬性] 窗格中,輸入 時間 在 [識別碼] 屬性和留下空白的 [文字] 屬性。
  4. 直接在標籤控制項,並按下 ENTER,移至頁面中的下一行後的資料指標的位置。
  5. FragmentCtrl1.ascx,拖放到 Web Form,使它本身放置標籤控制項的資料行之後。直接控制項之後,將游標的位置,然後按 ENTER 鍵移至網頁中的下一行。
  6. FragmentCtrl2.ascx,拖放到 Web Form,使它放置在 FragmentCtrl1.ascx 後的資料行本身。
  7. 在 [HTML] 檢視中,「 Web 表單看起來應該類似下列的程式碼:
    <%@ Page language ="c#" Codebehind="FragmentCaching.aspx.cs" 
    AutoEventWireup="false" Inherits="FragmentCache.FragmentCaching" %>
    <%@ Register TagPrefix="uc1" TagName="FragmentCtrl1" Src="FragmentCtrl1.ascx" %>
    <%@ Register TagPrefix="uc1" TagName="FragmentCtrl2" Src="FragmentCtrl2.ascx" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
       <HEAD>
          <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
          <meta name="CODE_LANGUAGE" Content="C#">
          <meta name="vs_defaultClientScript" content="JavaScript (ECMAScript)">
          <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
       </HEAD>
       <body>
          <form id="FragmentCaching" method="post" runat="server">
             <P>
                WebForm Time:
                <asp:Label id="Time" runat="server" ForeColor="Blue"></asp:Label>
             </P>
             <P>
                <uc1:FragmentCtrl1 id="FragmentCtrl11" runat="server">
                </uc1:FragmentCtrl1>
             </P>
             <P>
                <uc1:FragmentCtrl2 id="FragmentCtrl21" runat="server">
                </uc1:FragmentCtrl2>
             </P>
       </form>
       </body>
    </HTML>
    						
    附註: 請確定這些控制項置於裡面
  8. 以滑鼠右鍵按一下.aspx 檔案中,然後再按一下 [檢視程式碼],以顯示程式碼後置網頁原始檔。
  9. 將下列程式碼加入至Page_Load事件,設定時間標籤的Text屬性:
    private void Page_Load(object sender, System.EventArgs e)
          {
             Time.Text = "WebFormTime: " + DateTime.Now.TimeOfDay.ToString();
          }
    					
  10. 從 [檔案] 功能表中,按一下 [全部儲存] 以儲存使用者控制項、 Web Form 和其他相關聯的專案檔案]。
  11. 從 [建置] 功能表中的 Visual Studio。NET 整合式的開發環境 (IDE) 中,按一下 [建置],以建置專案。

執行範例

本章節將示範如何檢視程式碼在執行階段為見證快取行為,並且簡略描述為何,程式碼執行的方式,它不會。
  1. 在 Visual Studio 中。NET IDE 方案總管] 中,FragmentCaching.aspx Web Form 中,以滑鼠右鍵按一下,然後按一下 [在瀏覽器中的檢視執行任何程式碼。
  2. 頁面會出現在瀏覽器之後,頁面] 上按一下滑鼠右鍵,然後按一下重新整理重新整理頁面。您也可以按 F5 鍵重新整理頁面,如果您在外部 Visual Studio 的瀏覽器中檢視頁面。NET IDE 中。

    請注意 Web Form 上的時間已經更新,但仍顯示使用者控制項,其相關聯的快取項目已建立時的時間。
  3. 在第二個控制項中,按一下 [提交]。請注意控制項就會顯示更新的時間。這是為了回應使用者控制項參考RadioButtonList控制項的VaryByControl屬性設定。
  4. 按一下 [],然後按一下 [送出。請注意,在使用者控制項的顯示更新的時間是一次。這是因為新的快取項目進行此 [] 值設定為基礎的控制項。

    重複此步驟,但或許] 選項。您會看到相同的行為。
  5. 按一下 [ ],然後按一下 [送出。重複這項作業與 [],並有可能的選項。請注意,這些控制項的選取項目會快取,而且會顯示上次快取項目。如果您繼續按一下 [送出過去的@ OutputCache指示詞的時間] 設定,使用者控制項的時間會更新為RadioButtonList控制項的每個特定的值選取項目。
附註: 不是本文的目的,以涵蓋所有可能的設定和片段快取的案例。如需詳細資訊,請參閱 參考 這份文件的最後一節。

疑難排解

  • 不要嘗試以程式設計方式操作輸出快取使用者控制項。這是因為之前快取項目,就會發生在第一次在執行時,才以動態方式建立控制項。輸出快取滿足所有其他要求,直到控制項逾時。
  • 如果使用者控制項裝載的 Web Form 具有輸出快取期間比使用者控制項的持續時間還長,Web Form 的設定將會支配控制項的快取行為。

?考

如需有關 ASP。NET 快取,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
307225? (http://support.microsoft.com/kb/307225/EN-US/ ) 資訊: ASP。NET 快取的概觀

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbcaching kbhowtomaster kbservercontrols kbwebforms kbmt KB308378 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:308378? (http://support.microsoft.com/kb/308378/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。