ControlCachePolicy Klasse

Definition

Ermöglicht programmgesteuerten Zugriff auf die Ausgabecacheeinstellungen der Ausgabe für ein ASP.NET-Benutzersteuerelement.

public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
Vererbung
ControlCachePolicy

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein Benutzersteuerelement zur Laufzeit dynamisch geladen und programmgesteuert bearbeitet werden kann. Das PartialCachingAttribute -Attribut wird auf ein Benutzersteuerelement namens SimpleControlangewendet, was bedeutet, dass das Benutzersteuerelement zur Laufzeit von einem PartialCachingControl -Steuerelement umschlossen wird. Die SimpleControl Zwischenspeicherungseinstellungen des Objekts können programmgesteuert über das zugehörige ControlCachePolicy Objekt bearbeitet werden, das über einen Verweis auf das Steuerelement verfügbar ist, das PartialCachingControl es umschließt. In diesem Beispiel wird die Eigenschaft während der Duration Seiteninitialisierung untersucht und mit den SetSlidingExpiration Methoden und SetExpires geändert, wenn einige Bedingungen erfüllt sind.

<%@ Page Language="C#" %>
<%@ Reference Control="SimpleControl.ascx" %>
<script language="C#" runat="server">

// The following example demonstrates how to load a user control dynamically at run time, and
// work with the ControlCachePolicy object associated with it.

// Loads and displays a UserControl defined in a seperate Logonform.ascx file.
// You need to have "SimpleControl.ascx" file in 
// the same directory as the aspx file. 

void Page_Init(object sender, System.EventArgs e) {
    
    // Obtain a PartialCachingControl object which wraps the 'LogOnControl' user control.
    PartialCachingControl pcc = LoadControl("SimpleControl.ascx") as PartialCachingControl;        
    
    // If the control is slated to expire in greater than 60 Seconds
    if (pcc.CachePolicy.Duration > TimeSpan.FromSeconds(60) ) 
    {        
        // Make it expire faster. Set a new expiration time to 30 seconds, and make it
        // an absolute expiration if it isnt already.        
        pcc.CachePolicy.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(30)));
        pcc.CachePolicy.SetSlidingExpiration(false);
    }                    
    Controls.Add(pcc);
}
</script>
<%@ Page Language="VB" %>
<%@ Reference Control="SimpleControl.ascx" %>
<script language="VB" runat="server">

    ' The following example demonstrates how to load a user control dynamically at run time, and
    ' work with the ControlCachePolicy object associated with it.

    ' Loads and displays a UserControl defined in a seperate Logonform.ascx file.
    ' You need to have "SimpleControl.ascx" file in 
    ' the same directory as the aspx file. 

    Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
    
        ' Obtain a PartialCachingControl object which wraps the 'LogOnControl' user control.
        Dim pcc As PartialCachingControl
        pcc = LoadControl("SimpleControl.ascx")
    
        ' If the control is slated to expire in greater than 60 Seconds
        If (pcc.CachePolicy.Duration > TimeSpan.FromSeconds(60)) Then
            ' Make it expire faster. Set a new expiration time to 30 seconds, and make it
            ' an absolute expiration if it isnt already.        
            pcc.CachePolicy.SetExpires(DateTime.Now.Add(TimeSpan.FromSeconds(30)))
            pcc.CachePolicy.SetSlidingExpiration(False)
        End If
        Controls.Add(pcc)
    End Sub
</script>

Im folgenden Codebeispiel wird die Verwendung des SimpleControl Benutzersteuerelements von einer Web Forms Seite veranschaulicht. Um dieses Beispiel erfolgreich auszuführen, stellen Sie sicher, dass sich die Benutzersteuerungsdatei (ASCX), die zugehörige CodeBehind-Datei (CS oder VB) und die Web Forms Seite, die das Benutzersteuerelement (.aspx) hostet, im selben Verzeichnis befinden.

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

[PartialCaching(100)]
public partial class SimpleControl : System.Web.UI.UserControl
{    
    protected void Page_Load(object sender, EventArgs e)
    {
        ItemsRemaining.Text = GetAvailableItems().ToString();
        CacheTime.Text = DateTime.Now.ToLongTimeString();
    }

    private int GetAvailableItems()
    {
        SqlConnection sqlConnection = new SqlConnection
            ("Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;");
        SqlCommand sqlCommand = sqlConnection.CreateCommand();
        sqlCommand.CommandType = CommandType.StoredProcedure;
        sqlCommand.CommandText = "GetRemainingItems";
        sqlConnection.Open();
        int items = (int)sqlCommand.ExecuteScalar();
        sqlConnection.Close();
        return items;
    }
}
Imports System.Data.SqlClient

Partial Class SimpleControl
    Inherits System.Web.UI.UserControl

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        ItemsRemaining.Text = GetAvailableItems().ToString()
        CacheTime.Text = DateTime.Now.ToLongTimeString()
    End Sub

    Private Function GetAvailableItems() As Integer
        Dim sqlConnection As SqlConnection
        Dim sqlCommand As SqlCommand
        Dim items As Integer

        sqlConnection = New SqlConnection("Initial Catalog=Northwind;Data Source=localhost;Integrated Security=SSPI;")
        sqlCommand = sqlConnection.CreateCommand()
        sqlCommand.CommandType = Data.CommandType.StoredProcedure
        sqlCommand.CommandText = "GetRemainingItems"
        sqlConnection.Open()
        items = CInt(sqlCommand.ExecuteScalar())
        sqlConnection.Close()
        Return items
    End Function
End Class
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SimpleControl.ascx.cs" Inherits="SimpleControl" %>
<!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 id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<table cellspacing="15">
<tr>
<td><b>Available items: </b></td>
<td>
    <asp:Label ID="ItemsRemaining" runat="server" Text="Label"></asp:Label>
</td>
</tr>
<tr>
<td><b>As of: </b></td>
<td>
    <asp:Label ID="CacheTime" runat="server" Text="Label"></asp:Label>
</td>
</tr>
</table>
</form>
</body>
</html>
<%@ Control Language="VB" AutoEventWireup="true" CodeFile="SimpleControl.ascx.vb" Inherits="SimpleControl" %>
<!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 id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<table cellspacing="15">
<tr>
<td><b>Available items: </b></td>
<td>
    <asp:Label ID="ItemsRemaining" runat="server" Text="Label"></asp:Label>
</td>
</tr>
<tr>
<td><b>As of: </b></td>
<td>
    <asp:Label ID="CacheTime" runat="server" Text="Label"></asp:Label>
</td>
</tr>
</table>
</form>
</body>
</html>

Hinweise

Die ControlCachePolicy -Klasse wird von Entwicklern in szenariogesteuerten Benutzersteuerungen verwendet, um Ausgabezwischenspeicherungseinstellungen für Benutzersteuerelemente (ASCX-Dateien) anzugeben. ASP.NET bettet Benutzersteuerelemente in eine -Instanz ein BasePartialCachingControl . Die BasePartialCachingControl -Klasse stellt ein Benutzersteuerelement dar, für das die Ausgabezwischenspeicherung aktiviert ist. Wenn Sie auf die BasePartialCachingControl.CachePolicy -Eigenschaft eines PartialCachingControl Steuerelements zugreifen, erhalten Sie immer ein gültiges ControlCachePolicy Objekt. Wenn Sie jedoch auf die UserControl.CachePolicy -Eigenschaft eines UserControl Steuerelements zugreifen, erhalten Sie nur dann ein gültiges ControlCachePolicy Objekt, wenn das Benutzersteuerelement bereits von einem BasePartialCachingControl -Steuerelement umschlossen ist. Wenn es nicht umschlossen ist, löst das ControlCachePolicy von der -Eigenschaft zurückgegebene Objekt Ausnahmen aus, wenn Sie versuchen, es zu bearbeiten, da es keine zugeordnete BasePartialCachingControlhat. Überprüfen Sie die -Eigenschaft, um festzustellen, ob eine UserControl Instanz das SupportsCaching Zwischenspeichern unterstützt, ohne Ausnahmen zu generieren.

Die Verwendung der ControlCachePolicy -Klasse ist eine von mehreren Möglichkeiten, wie Sie die Ausgabezwischenspeicherung aktivieren können. In der folgenden Liste werden Methoden beschrieben, die Sie zum Aktivieren der Ausgabezwischenspeicherung verwenden können:

  • Verwenden Sie die @ OutputCache -Anweisung, um die Ausgabezwischenspeicherung in deklarativen Szenarien zu aktivieren.

  • Verwenden Sie das -Attribut, um die PartialCachingAttribute Zwischenspeicherung für ein Benutzersteuerelement in einer CodeBehind-Datei zu aktivieren.

  • Verwenden Sie die ControlCachePolicy -Klasse, um Cacheeinstellungen in programmgesteuerten Szenarien anzugeben, in denen Sie mit BasePartialCachingControl Instanzen arbeiten, die mithilfe einer der vorherigen Methoden zwischengespeichert und dynamisch mit der TemplateControl.LoadControl -Methode geladen wurden. Eine ControlCachePolicy Instanz kann nur zwischen den Init Phasen und PreRender des Steuerelementlebenszyklus erfolgreich bearbeitet werden. Wenn Sie ein ControlCachePolicy Objekt nach der PreRender Phase ändern, löst ASP.NET eine Ausnahme aus, da alle Änderungen, die nach dem Rendern des Steuerelements vorgenommen werden, die Cacheeinstellungen nicht tatsächlich beeinflussen können (ein Steuerelement wird während der Render Phase zwischengespeichert). Schließlich steht eine Benutzersteuerelementinstanz (und damit ihr ControlCachePolicy Objekt) nur für die programmgesteuerte Bearbeitung zur Verfügung, wenn sie tatsächlich gerendert wird.

Eigenschaften

Cached

Ruft einen Wert fest ab, der angibt, ob das Zwischenspeichern von Fragmenten für das Benutzersteuerelement aktiviert ist, oder legt diesen fest.

Dependency

Ruft eine Instanz der CacheDependency-Klasse ab, die der zwischengespeicherten Ausgabe des Benutzersteuerelements zugeordnet ist, oder legt diese fest.

Duration

Ruft die Zeitspanne ab, die zwischengespeicherte Elemente im Ausgabecache verbleiben, oder legt diese fest.

ProviderName

Ruft den Namen des Ausgabecacheanbieters ab, der einer Steuerelementinstanz zugeordnet ist, oder legt diesen fest.

SupportsCaching

Ruft einen Wert ab, der angibt, ob das Benutzersteuerelement Zwischenspeicherung unterstützt.

VaryByControl

Ruft eine Liste mit Steuerelementbezeichnern ab, anhand derer die zwischengespeicherte Ausgabe variiert werden kann, oder legt diese fest.

VaryByParams

Ruft eine Liste mit GET-Parameternamen oder POST-Parameternamen ab, anhand derer die zwischengespeicherte Ausgabe variiert werden kann, oder legt diese fest.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
SetExpires(DateTime)

Weist das BasePartialCachingControl-Steuerelement an, das das Benutzersteuerelement umschließt, den Cacheeintrag zum angegebenen Zeitpunkt (Datum und Uhrzeit) ablaufen zu lassen.

SetSlidingExpiration(Boolean)

Weist das BasePartialCachingControl-Steuerelement an, das das Benutzersteuerelement umschließt, für den Cacheeintrag des Benutzersteuerelements gleitende oder absolute Ablaufzeit festzulegen.

SetVaryByCustom(String)

Legt eine Liste der benutzerdefinierten Zeichenfolgen fest, die vom Ausgabecache zum Variieren des Benutzersteuerelements verwendet werden.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen