Ausführen der Fragmentzwischenspeicherung in ASP.NET mithilfe von Visual C# .NET

In diesem Artikel wird beschrieben, wie Sie die Fragmentzwischenspeicherung in ASP.NET mithilfe von Visual C# .NET ausführen.

Ursprüngliche Produktversion: Microsoft ASP.NET
Ursprüngliche KB-Nummer: 308378

Zusammenfassung

In diesem Artikel wird veranschaulicht, wie Sie die Fragmentzwischenspeicherung in ASP.NET implementieren. Das Zwischenspeichern von Fragmenten speichert die Codefragmente eines Webformulars nicht direkt zwischen. Fragmentzwischenspeicherung bezieht sich auf das Zwischenspeichern einzelner Benutzersteuerelemente (ASCX) innerhalb eines Webformulars. Jedes Benutzersteuerelement kann über unabhängige Cachedauern und Implementierungen der Anwendung des Zwischenspeicherverhaltens verfügen. Der Beispielcode in diesem Artikel veranschaulicht, wie diese Funktionalität erreicht wird.

Das Zwischenspeichern von Fragmenten ist nützlich, wenn Sie nur eine Teilmenge einer Seite zwischenspeichern müssen. Navigationsleisten, Kopf- und Fußzeilen eignen sich gut für das Zwischenspeichern von Fragmenten.

Anforderungen

  • Windows 2000
  • Internetinformationsserver (IIS)
  • .NET Framework
  • ASP.NET

Erstellen einer ASP.NET-Webanwendung mit C# .NET

Die folgenden Schritte veranschaulichen, wie Sie eine neue ASP.NET-Webanwendung namens FragmentCache erstellen.

  1. Öffnen von Visual Studio .NET

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Klicken Sie im Dialogfeld Neues Projekt unter Projekttypen auf Visual C#-Projekte, und klicken Sie dann unter Vorlagen auf ASP.NET Webanwendung.

  4. Geben Sie im Feld Name den Namen FragmentCache ein. Wählen Sie im Feld Speicherort den entsprechenden Server aus. Wenn Sie den lokalen Server verwenden, können Sie den Servernamen als http://localhostbelassen.

Erstellen der Benutzersteuerelemente

Dieser Abschnitt enthält den Beispielcode und Erläuterungen der einzelnen Benutzersteuerelemente, die Sie in diesem Artikel verwenden werden. Sie können den Beispielcode kopieren und wie beschrieben in die Datei associated.ascx und die CodeBehind-Seite einfügen.

Benutzersteuerelement 1 (FragmentCtrl1.ascx)

Das folgende Benutzersteuerelement FragmentCtrl1.ascx ist einfach. FragmentCtrl1.ascx schreibt den Zeitpunkt, zu dem der Cacheeintrag für das Element auftritt. Wie bei allen Steuerelementen, die für diesen Artikel erstellt wurden, wird eine grundlegende Beschreibung für das Steuerelement bereitgestellt, um die Einstellungen und die zugehörigen Verhaltensweisen zur Laufzeit in den späteren Abschnitten einfacher zu unterscheiden.

  1. Erstellen Sie in Visual Studio .NET wie folgt ein neues Benutzersteuerelement:

    1. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Webbenutzersteuerelement hinzufügen.
    2. Nennen Sie das Steuerelement FragmentCtrl1.ascx, und klicken Sie dann auf Öffnen.
  2. Stellen Sie sicher, dass die Registerkarte Entwurf ausgewählt ist. Klicken Sie auf ein Web Form Label-Steuerelement, und ziehen Sie es aus dem Web Forms Abschnitt der Toolbox, und legen Sie das Label-Steuerelement auf der Seite ab.

  3. Klicken Sie auf das Steuerelement Bezeichnung. Geben Sie im Bereich Eigenschaften der integrierten Entwicklungsumgebung (IDE) von Visual Studio .NETcacheEntryTime in die ID-Eigenschaft ein, und lassen Sie die Text-Eigenschaft leer.

  4. Wechseln Sie zur HTML-Ansicht , und fügen Sie oben auf der Seite die folgende @ OutputCache -Anweisung hinzu:

    <%@ OutputCache Duration="40" VaryByParam="none"%>
    
  5. Klicken Sie mit der rechten Maustaste auf die ASCX-Datei , und klicken Sie dann auf Code anzeigen , um die Quelle der CodeBehind-Seite anzuzeigen.

  6. Fügen Sie dem -Ereignis den Page_Load folgenden Code hinzu, der die -Eigenschaft der CacheEntryTimeText Bezeichnung festlegt:

    private void Page_Load(object sender, System.EventArgs e)
    {
        CacheEntryTime.Text ="FragmentCtrl1: " + DateTime.Now.TimeOfDay.ToString();
    }
    

Benutzersteuerelement 2 (FragmentCtrl2.ascx)

Obwohl Sie einfach eine andere Version des ersten Steuerelements mit einer anderen Cachedauer erstellen können, um zu zeigen, wie mehrere Benutzersteuerelemente auf derselben Seite unabhängige Verhaltensweisen aufweisen können, macht dieser Abschnitt das zweite Steuerelement, FragmentCtrl2.ascx, interessanter. FragmentCtrl2.ascx wird verwendet, um das VaryByControl-Attribut einzuführen. VaryByControl ermöglicht es, unterschiedliche Cacheeinträge basierend auf den Werten für ein angegebenes Steuerelement zu erstellen. Diese Funktionalität wird zur Laufzeit im nächsten Abschnitt deutlicher erläutert.

  1. Erstellen Sie in Visual Studio .NET wie folgt ein neues Benutzersteuerelement:

    1. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Webbenutzersteuerelement hinzufügen.
    2. Nennen Sie das Steuerelement FragmentCtrl2.ascx, und klicken Sie dann auf Öffnen.
  2. Stellen Sie sicher, dass die Registerkarte Entwurf ausgewählt ist. Klicken Sie auf ein Webformularbezeichnungs-Steuerelement, und ziehen Sie es aus dem Web Forms Abschnitt der Toolbox, und legen Sie dann das Steuerelement Bezeichnung auf der Seite ab.

  3. Klicken Sie auf das Steuerelement Bezeichnung. Geben Sie im Bereich Eigenschaften in der ID-EigenschaftCacheEntryTime ein, 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 ein Web Form RadioButtonList-Steuerelement, und ziehen Sie es aus dem Web Forms Abschnitt der Toolbox, und legen Sie es auf der Seite ab. Das RadioButtonList-Steuerelement sollte allein in der Zeile nach dem Label-Steuerelement angezeigt werden.

  6. Klicken Sie auf das Steuerelement RadioButtonList. Geben Sie im Bereich Eigenschaften den Namen MyRadioButtonList in die ID-Eigenschaft ein.

  7. Suchen Sie im Bereich Eigenschaften nach der Items-Eigenschaft für das MyRadioButtonList-Steuerelement , klicken Sie auf Sammlung, und klicken Sie dann auf die Schaltfläche mit den Auslassungspunkten (...), die neben Collection angezeigt wird.

  8. Fügen Sie im Fenster ListItem Collection EditorListItem-Elemente wie folgt hinzu:

    1. Klicken Sie unter Mitglieder auf Hinzufügen.
    2. Legen Sie im Abschnitt ListItem-EigenschaftenText und Wert auf Ja fest, und legen Sie Ausgewählt auf True fest.
    3. Klicken Sie unter Mitglieder erneut auf Hinzufügen .
    4. Legen Sie im Abschnitt ListItem-Eigenschaftendie Werte Text und Wert auf Nein fest, und legen Sie Ausgewählt auf False fest.
    5. Klicken Sie unter Mitglieder auf Letztes Mal hinzufügen .
    6. Legen Sie im Abschnitt ListItem-Eigenschaftentext und value auf Maybe und Selected auf False fest.
    7. Klicken Sie auf OK , um zur ASCX-Datei in der Entwurfsansicht zurückzukehren. Beachten Sie, dass drei Optionsfelder angezeigt werden, die im RadioButtonList-Steuerelement enthalten sind: Ja, Nein und 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 wechseln.

  10. Klicken Sie auf ein Webformular-Schaltflächen-Steuerelement, und ziehen Sie es aus dem Web Forms Abschnitt der Toolbox, und legen Sie es auf dem Zeichenblatt ab. Das Button-Steuerelement sollte allein in der Zeile nach dem RadioButtonList-Steuerelement angezeigt werden.

  11. Klicken Sie auf das Schaltflächen-Steuerelement. Geben Sie im Bereich Eigenschaften in die Text-EigenschaftSubmit ein.

  12. Wechseln Sie zur HTML-Ansicht , und fügen Sie oben auf der Seite die folgende @OutputCache -Anweisung hinzu:

    <%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="MyRadioButtonList"%>
    
  13. Klicken Sie mit der rechten Maustaste auf die ASCX-Datei , und klicken Sie dann auf Code anzeigen , um die Quelle der CodeBehind-Seite anzuzeigen.

  14. Fügen Sie dem -Ereignis den Page_Load folgenden Code hinzu, der die -Eigenschaft der CacheEntryTimeText Bezeichnung festlegt:

    private void Page_Load(object sender, System.EventArgs e)
    {
        CacheEntryTime.Text = "FragmentCtrl2: " + DateTime.Now.TimeOfDay.ToString();
    }
    

Erstellen des Webformulars für die Benutzersteuerelemente

Sie können jetzt das Webformular (.aspx) erstellen, das das neu entwickelte Benutzersteuerelement enthält. Führen Sie die folgenden Schritte aus, um das Webformular zu erstellen:

  1. Fügen Sie ihrem Projekt in Visual Studio .NET wie folgt ein neues Webformular mit dem Namen FragmentCaching.aspx hinzu:

    1. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Webformular hinzufügen.
    2. Benennen Sie das Webformular FragmentCaching.aspx, und klicken Sie dann auf Öffnen.
  2. Stellen Sie sicher, dass die Registerkarte Entwurf ausgewählt ist. Klicken Sie auf ein Webformularbezeichnungs-Steuerelement, und ziehen Sie es aus dem Web Forms Abschnitt der Toolbox, und legen Sie es auf dem Zeichenblatt ab.

  3. Klicken Sie auf das Steuerelement Bezeichnung. Geben Sie im Bereich Eigenschaften zeit in die ID-Eigenschaft ein, 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 wechseln.

  5. Ziehen Sie FragmentCtrl1.ascx, und legen Sie es auf dem Webformular ab, sodass 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 Webformular ab, sodass es nach FragmentCtrl1.ascx in einer Zeile positioniert wird.

  7. In der HTML-Ansicht sollte das Webformular ähnlich dem folgenden 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 im

  8. Klicken Sie mit der rechten Maustaste auf die .aspx-Datei , und klicken Sie dann auf Code anzeigen , um die Quelle der CodeBehind-Seite anzuzeigen.

  9. Fügen Sie dem -Ereignis den Page_Load folgenden Code hinzu, der die -Eigenschaft der TimeText Bezeichnung festlegt:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Time.Text = "WebFormTime: " + DateTime.Now.TimeOfDay.ToString();
    }
    
  10. Klicken Sie im Menü Datei auf Alle speichern , um die Benutzersteuerelemente, das Webformular und andere zugeordnete Projektdateien zu speichern.

  11. Klicken Sie im Menü Erstellen in der integrierten Entwicklungsumgebung (IDE) von Visual Studio .NET auf Erstellen , um das Projekt zu erstellen.

Ausführen des Beispiels

In diesem Abschnitt wird veranschaulicht, wie Der Code zur Laufzeit angezeigt wird, um das Zwischenspeicherungsverhalten zu beobachten. Anschließend wird kurz beschrieben, warum der Code so funktioniert, wie er es tut.

  1. Klicken Sie im visual Studio .NET-IDE-Projektmappen-Explorer mit der rechten Maustaste auf das FragmentCaching.aspx WebFormular, und klicken Sie dann auf Im Browser anzeigen, um den Code auszuführen.

  2. Nachdem die Seite im Browser angezeigt wird, klicken Sie mit der rechten Maustaste auf die Seite, und klicken Sie dann auf Aktualisieren , um die Seite zu aktualisieren. Sie können auch F5 drücken, um die Seite zu aktualisieren, wenn Sie die Seite in einem Browser anzeigen, der sich außerhalb der Visual Studio .NET-IDE befindet.

    Hinweis

    Die Uhrzeit im Webformular wurde aktualisiert, aber die Benutzersteuerelemente zeigen weiterhin die Zeit an, zu der der zugeordnete Cacheeintrag vorgenommen wurde.

  3. Klicken Sie im zweiten Steuerelement auf Senden. Beachten Sie, dass das Steuerelement eine aktualisierte Uhrzeit anzeigt. Dies ist eine Reaktion auf die Einstellung des VaryByControl-Attributs für das Benutzersteuerelement, das auf das RadioButtonList-Steuerelement verweist.

  4. Klicken Sie auf Nein und dann erneut auf Absenden .

    Hinweis

    Die Uhrzeit wird in der Anzeige des Benutzersteuerelements erneut aktualisiert. Dies liegt daran, dass ein neuer Cacheeintrag für das Steuerelement basierend auf dieser Einstellung Kein Wert erstellt wird. Wiederholen Sie diesen Schritt, außer mit der Option Vielleicht . Sie sehen das gleiche Verhalten.

  5. Klicken Sie auf Ja, und klicken Sie dann erneut auf Senden . Wiederholen Sie diesen Vorgang mit den Optionen Nein und Vielleicht .

    Diese Auswahlen für das Steuerelement werden zwischengespeichert und zeigen die vorherige Cacheeingabezeit an. Wenn Sie weiterhin nach der Dauereinstellung der @ OutputCache-Direktiveauf Submit klicken, wird die Zeit des Benutzersteuerelements für jede bestimmte Wertauswahl für das RadioButtonList-Steuerelement aktualisiert.

Hinweis

Es ist nicht das Ziel dieses Artikels, alle möglichen Einstellungen und Szenarien für die Fragmentzwischenspeicherung zu behandeln.

Problembehandlung

  • Versuchen Sie nicht, ein zwischengespeichertes Benutzersteuerelement programmgesteuert zu bearbeiten. Dies liegt daran, dass das Steuerelement nur dynamisch erstellt wird, wenn es zum ersten Mal ausgeführt wird, bevor der Cacheeintrag auftritt. Der Ausgabecache erfüllt alle anderen Anforderungen, bis das Steuerelement abläuft.

  • Wenn das Webformular, in dem Benutzersteuerelemente gehostet werden, eine Ausgabecachedauer aufweist, die länger ist als die Dauer der Benutzersteuerelemente, bestimmt die Einstellung des Webformulars das Zwischenspeicherungsverhalten der Steuerelemente.