Artikel-ID: 308378 - Geändert am: Donnerstag, 17. Mai 2012 - Version: 1.0

Zum Durchführen von Fragmentzwischenspeicherung in ASP.NET mithilfe von Visual c#.NET

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel wurde zuvor veröffentlicht unter D308378

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

Dieser Artikel veranschaulicht das Implementieren von Fragmentzwischenspeicherung in ASP.NET. Zwischenspeichern von Fragmenten zwischenspeichert nicht tatsächlich ein Web Form-Codefragmente direkt; Fragmentzwischenspeicherung bezieht sich auf die Zwischenspeicherung einzelner Benutzersteuerelemente (.ascx) in einem Webformular. Jedes Benutzersteuerelement können unabhängige Cache Dauer und Implementierungen wie das Zwischenspeicherungsverhalten angewendet werden soll. Der Beispielcode in diesem Artikel veranschaulicht diese Funktionalität zu erreichen.

Fragmentzwischenspeicherung ist nützlich, wenn Sie nur eine Teilmenge einer Seite zwischenspeichern müssen. Navigationsleisten sowie Kopf- und Fußzeilen sind gute Kandidaten für Fragmentzwischenspeicherung.

Anforderungen

  • Microsoft Windows 2000
  • Microsoft Internet Informationsserver (IIS)
  • Microsoft.NET Framework
  • ASP.NET

Erstellen Sie eine ASP.NET-Webanwendung mit Visual c#.NET

Die folgenden Schritte veranschaulichen das Erstellen eine neue ASP.NET-Webanwendung namens "FragmentCache".
  1. Öffnen Sie die Microsoft-Visual Studio.NET
  2. Klicken Sie im Menü Datei zeigen Sie auf neu, und klicken Sie dann auf Projekt.
  3. Klicken Sie im Dialogfeld Neues Projekt klicken Sie unter Projekttypenauf Visual C#-Projekte , und klicken Sie dann auf ASP.NET-Webanwendung unter Vorlagen.
  4. Geben Sie im Feld Name"FragmentCache". Wählen Sie im Feld Speicherort den entsprechenden Server. Wenn Sie den lokalen Server verwenden, können Sie den Servernamen http://localhost beibehalten.

Erstellen der Benutzersteuerelemente

Dieser Abschnitt enthält den Beispielcode sowie Erläuterungen der einzelnen Benutzersteuerelemente, die Sie in diesem Artikel verwendet werden. Sie können kopieren und fügen Sie den Beispielcode in der zugeordneten ASCX-Datei und Code-Behind-Seite, wie beschrieben.

Benutzersteuerelement 1 (FragmentCtrl1.ascx)

Das folgende Benutzersteuerelement, FragmentCtrl1.ascx, ist sehr einfach. FragmentCtrl1.ascx die Uhrzeit, der Cacheeintrag für das Element auftritt. Wie bei allen Steuerelemente, die für diesen Artikel erstellt werden, wird eine grundlegende Beschreibung für das Steuerelement, um die Einstellungen und dem zugehörigen Verhalten zur Laufzeit zu unterscheiden, in den nachfolgenden Abschnitten erleichtern bereitgestellt.
  1. In Visual Studio.NET, erstellen Sie ein neues Benutzersteuerelement wie folgt:
    1. Im Projektmappen-Explorer mit der rechten Maustaste des Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Web-Benutzersteuerelement hinzufügen.
    2. Geben Sie dem Steuerelement FragmentCtrl1.ascx, und klicken Sie dann auf Öffnen.
  2. Stellen Sie sicher, dass die Registerkarte Entwurf ausgewählt ist. Klicken Sie auf ziehen Sie ein Webformular Label -Steuerelement aus dem Abschnitt Web Forms der Toolbox, und das Label -Steuerelement auf die Seite.
  3. Klicken Sie auf das Label -Steuerelement. Im Bereich Eigenschaften des Visual Studio.NET integrierten Entwicklungsumgebung (IDE), Typ CacheEntryTimeID -Eigenschaft, und lassen Sie die Text -Eigenschaft leer.
  4. Wechseln Sie zur HTML-Ansicht, und fügen Sie die folgende @ OutputCache -Direktive am Anfang der Seite:
    <%@ OutputCache Duration="40" VaryByParam="none"%>
    					
  5. Maustaste auf die ASCX-Datei, und klicken Sie dann auf Code anzeigen , um die CodeBehind-Seitenquelle anzuzeigen.
  6. Fügen Sie den folgenden Code dem Page_Load -Ereignis des Labels CacheEntryTimeText -Eigenschaft festlegt:
    private void Page_Load(object sender, System.EventArgs e)
          {
             CacheEntryTime.Text ="FragmentCtrl1: " +  DateTime.Now.TimeOfDay.ToString();
          }
    					

Benutzersteuerelement 2 (FragmentCtrl2.ascx)

Dieser Abschnitt macht das zweite Steuerelement, FragmentCtrl2.ascx, jedoch interessanter, Sie können zwar einfach eine andere Version des ersten Steuerelements mit einer anderen Zwischenspeicherungsdauer erstellen zeigen, wie mehrere Benutzersteuerelemente unabhängiges Verhalten auf der gleichen Seite aufweisen können. FragmentCtrl2.ascx wird zum einführen des Attributs verwendet. VaryByControl ermöglicht, dass mehrere Cacheeinträge basierend auf den Werten für ein bestimmtes Steuerelement vorgenommen werden. Diese Funktionalität viel klarer zur Laufzeit im nächsten Abschnitt erfolgt.
  1. In Visual Studio.NET, erstellen Sie ein neues Benutzersteuerelement wie folgt:
    1. Im Projektmappen-Explorer mit der rechten Maustaste des Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Web-Benutzersteuerelement hinzufügen.
    2. Geben Sie dem Steuerelement, FragmentCtrl2.ascx, und klicken Sie dann auf Öffnen.
  2. Stellen Sie sicher, dass die Registerkarte Entwurf ausgewählt ist. Klicken Sie auf und ziehen Sie ein Webformular Label -Steuerelement aus dem Abschnitt Web Forms der Toolbox, und legen Sie das Label -Steuerelement auf die Seite.
  3. Klicken Sie auf das Label -Steuerelement. Geben Sie im Bereich Eigenschaften CacheEntryTimeID -Eigenschaft, und lassen Sie die Text -Eigenschaft leer.
  4. Positionieren Sie den Cursor direkt hinter dem Label -Steuerelement, und drücken Sie dann die EINGABETASTE, um zur nächsten Zeile auf der Seite zu wechseln.
  5. Klicken Sie auf und ziehen Sie ein Web Form RadioButtonList -Steuerelement aus dem Abschnitt Web Forms der Toolbox, und legen Sie es auf der Seite. Das RadioButtonList -Steuerelement sollte allein in der Zeile hinter dem Label -Steuerelement angezeigt werden.
  6. Klicken Sie auf das RadioButtonList -Steuerelement. Geben Sie im Bereich Eigenschaften MyRadioButtonList in der ID -Eigenschaft.
  7. Suchen Sie im Bereich Eigenschaften die Items -Eigenschaft für das Steuerelement MyRadioButtonList , klicken Sie auf Sammlung, und klicken Sie dann auf das Auslassungszeichen (...), das neben der Auflistungangezeigt wird.
  8. Fügen Sie im Fenster ListItem-Auflistungs-EditorListItem -Elemente wie folgt:
    1. Klicken Sie unter MitgliederHinzufügen.
    2. Klicken Sie im Abschnitt ListItem -Eigenschaften Text und Wert auf Jafestgelegt und Selected auf Truefestgelegt.
    3. Klicken Sie unter Mitgliedererneut auf Hinzufügen .
    4. Klicken Sie im Bereich ListItem -Eigenschaften Text und Wert auf Nofestgelegt und ausgewählte auf Falsefestgelegt.
    5. Klicken Sie unter MitgliederHinzufügen ein letztes Mal.
    6. Im Abschnitt ListItem -Eigenschaften Text und Wert auf vielleichtfestgelegt und Selected auf Falsefestgelegt.
    7. Klicken Sie auf OK , um die ASCX-Datei in der Entwurfsansicht zurückzukehren. Beachten Sie, dass die drei Schaltflächen radio angezeigt werden, die im RadioButtonList -Steuerelement enthalten sind: Ja, Neinund vielleicht.
  9. Positionieren Sie den Cursor direkt hinter dem RadioButtonList -Steuerelement, und drücken Sie die EINGABETASTE, um zur nächsten Zeile auf der Seite zu verschieben.
  10. Klicken Sie auf und ziehen Sie ein Web Form- Button -Steuerelement aus dem Abschnitt Web Forms der Toolbox, und legen Sie es auf der Seite. Das Button -Steuerelement sollte allein in der Zeile hinter dem RadioButtonList -Steuerelement angezeigt werden.
  11. Klicken Sie auf das Button -Steuerelement. Geben Sie im Bereich Eigenschaften Senden in der Text -Eigenschaft.
  12. Wechseln Sie zur HTML-Ansicht, und fügen Sie die folgende @ OutputCache -Direktive am Anfang der Seite:
    <%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="MyRadioButtonList"%>
    					
  13. Maustaste auf die ASCX-Datei, und klicken Sie dann auf Code anzeigen , um die CodeBehind-Seitenquelle anzuzeigen.
  14. Fügen Sie den folgenden Code dem Page_Load -Ereignis des Labels CacheEntryTimeText -Eigenschaft festlegt:
    private void Page_Load(object sender, System.EventArgs e)
          {
             CacheEntryTime.Text = "FragmentCtrl2: " + DateTime.Now.TimeOfDay.ToString();
          }
    					

Erstellen Sie das Webformular enthält die Benutzersteuerelemente

Sie können nun das Webformular (ASPX), das neu entwickelte Benutzersteuerelement enthalten erstellen. Gehen Sie folgendermaßen vor, um das Web Form zu erstellen:
  1. Fügen Sie ein neues Webformular namens FragmentCaching.aspx auf Ihr Projekt im Visual Studio.NET wie folgt:
    1. Im Projektmappen-Explorer mit der rechten Maustaste des Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Web Form hinzufügen.
    2. Nennen Sie das Web "FragmentCaching.aspx" zu, und klicken Sie dann auf Öffnen.
  2. Stellen Sie sicher, dass die Registerkarte Entwurf ausgewählt ist. Klicken Sie auf und ziehen Sie ein Webformular Label -Steuerelement aus dem Abschnitt Web Forms der Toolbox, und legen Sie es auf der Seite.
  3. Klicken Sie auf das Label -Steuerelement. Geben Sie im Bereich Eigenschaften ZeitID -Eigenschaft, und lassen Sie die Text -Eigenschaft leer.
  4. Positionieren Sie den Cursor direkt hinter dem Label -Steuerelement, und drücken Sie die EINGABETASTE, um zur nächsten Zeile auf der Seite zu verschieben.
  5. Ziehen Sie FragmentCtrl1.ascx, und legen Sie es auf das Web Form, so dass es nach dem Label -Steuerelement in einer Zeile positioniert wird. Positionieren Sie den Cursor direkt hinter dem Steuerelement, und drücken Sie die EINGABETASTE, um zur nächsten Zeile auf der Seite zu wechseln.
  6. Ziehen Sie FragmentCtrl2.ascx, und legen Sie es auf das Web Form, so dass es hinter FragmentCtrl1.ascx in einer Zeile positioniert ist.
  7. In HTML-Ansicht sollte das Webformular ähnlich wie der folgende Code aussehen:
    <%@ 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>
    						
    Hinweis: Stellen Sie sicher, dass die Steuerelemente, innerhalb platziert werden der
  8. Maustaste auf die ASPX-Datei, und klicken Sie dann auf Code anzeigen , um die CodeBehind-Seitenquelle anzuzeigen.
  9. Fügen Sie den folgenden Code dem Page_Load -Ereignis der ZeiteinheitText -Eigenschaft festlegt:
    private void Page_Load(object sender, System.EventArgs e)
          {
             Time.Text = "WebFormTime: " + DateTime.Now.TimeOfDay.ToString();
          }
    					
  10. Klicken Sie im Menü Datei auf Alles speichern , um die Benutzersteuerelemente, das Webformular und andere zugehörige Projektdateien speichern.
  11. Im Menü Erstellen in der Visual Studio.NET integrierten Entwicklungsumgebung (IDE), klicken Sie auf Erstellen , um das Projekt erstellen.

Führen Sie das Beispiel

In diesem Abschnitt wird veranschaulicht, wie den Code zur Laufzeit, um das Zwischenspeicherungsverhalten Zeuge anzeigen und dann kurz beschrieben, warum der Code die Methode führt, die es tut.
  1. In der Visual Studio.NET IDE Projektmappen-Explorer mit der rechten Maustaste das Webformular FragmentCaching.aspx, und klicken Sie dann auf in Browser anzeigen , um den Code auszuführen.
  2. Nachdem die Seite im Browser angezeigt wird, mit der rechten Maustaste der Seite, und klicken Sie dann auf Aktualisieren , um die Seite zu aktualisieren. Sie können auch drücken die Taste F5, um die Seite zu aktualisieren, wenn Sie die Seite in einem Browser anzeigen, die für externe Visual Studio.NET-IDE.

    Beachten Sie, dass die Zeit auf dem Web Form wurde aktualisiert, aber dennoch anzeigen, die Benutzersteuerelemente der Zeit, wann der entsprechende Cacheeintrag vorgenommen wurde.
  3. Das zweite Steuerelement klicken Sie auf Absenden. Beachten Sie, dass das Steuerelement eine aktualisierte Uhrzeit anzeigt. Dies geschieht als Reaktion auf die Einstellung der VaryByControl -Attribut für das Benutzersteuerelement, das RadioButtonList -Steuerelement verweist.
  4. Klicken Sie auf Nein, und klicken Sie auf erneut Senden . Beachten Sie, dass die Zeit in der Anzeige des Benutzersteuerelements erneut aktualisiert wird. Deshalb, weil ein neuer Cacheeintrag für das Steuerelement basierend auf dieser Werteinstellung Nr. erfolgt.

    Wiederholen Sie diesen Schritt außer mit der Option vielleicht . Sie bemerken das gleiche Verhalten.
  5. Klicken Sie auf Ja, und klicken Sie auf erneut Senden . Wiederholen Sie diesen Vorgang mit den Optionen Nein und vielleicht . Beachten Sie, dass diese Auswahl für das Steuerelement zwischengespeichert werden und sie einem früheren Zeitpunkt für die Cache-Eintrag angezeigt. Wenn Sie nach der Einstellung für die @ OutputCache -Direktive für die Dauer auf Absenden klicken weiterhin, wird das Benutzersteuerelement für jede einzelne Wertauswahl für das RadioButtonList -Steuerelement aktualisiert.
Hinweis: Es ist nicht Ziel dieses Artikels, um alle möglichen Einstellungen und Szenarios für Fragmentzwischenspeicherung zu decken. Weitere Informationen finden Sie die Referenzen Abschnitt am Ende dieses Artikels.

Problembehandlung

  • Versuchen Sie nicht, ein Benutzersteuerelement programmgesteuert zu bearbeiten, die Ausgabe zwischengespeichert wird. Deshalb, weil das Steuerelement nur dynamisch erstellt wird, wenn sie das erste Mal, bevor der Cacheeintrag auftritt ausgeführt wird. Der Ausgabecache verarbeitet alle anderen Anforderungen, bis das Steuerelement abläuft.
  • Verfügt das Web Form, in dem Steuerelemente gehostet werden, eine Dauer des Ausgabecaches, die länger als die Dauer der Ausführung der Benutzersteuerelemente ist, bestimmt die Einstellung des Webformulars das Zwischenspeicherungsverhalten der Steuerelemente.

Informationsquellen

Weitere Informationen zu ASP.NET-Zwischenspeicherung, klicken Sie in folgendem Artikel der Microsoft Knowledge Base anzuzeigen:
307225  (http://support.microsoft.com/kb/307225/EN-US/ ) INFO: ASP.NET-Caching-Übersicht

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbcaching kbhowtomaster kbservercontrols kbwebforms kbmt KB308378 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 308378  (http://support.microsoft.com/kb/308378/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.