ControlCachePolicy Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bietet programmgesteuerten Zugriff auf die Ausgabecacheeinstellungen eines ASP.NET Benutzersteuerelements.
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 dynamisch geladen und programmgesteuert zur Laufzeit bearbeitet werden kann. Das PartialCachingAttribute Attribut wird auf ein Benutzersteuerelement mit dem Namen SimpleControlangewendet, was bedeutet, dass das Benutzersteuerelement zur Laufzeit von einem PartialCachingControl Steuerelement umbrochen wird. Die SimpleControl Zwischenspeicherungseinstellungen des Objekts können programmgesteuert über das zugeordnete ControlCachePolicy Objekt bearbeitet werden, das über einen Verweis auf das PartialCachingControl Steuerelement verfügbar ist, das es umschließt. In diesem Beispiel wird die Eigenschaft während der Duration Seiteninitialisierung untersucht und mithilfe der SetSlidingExpiration Methoden und SetExpires Methoden 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>
Das folgende Codebeispiel veranschaulicht die Verwendung des SimpleControl Benutzersteuerelements von einer Web Forms-Seite. Um dieses Beispiel erfolgreich auszuführen, stellen Sie sicher, dass sich die Benutzersteuerelementdatei (ASCX), die CodeBehind-Datei (.cs oder .vb) und die Web Forms-Seite, auf der das Benutzersteuerelement (.aspx) gehostet wird, 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 programmgesteuerten Benutzersteuerungsszenarien verwendet, um Ausgabezwischenspeicherungseinstellungen für Benutzersteuerelemente (ASCX-Dateien) anzugeben. ASP.NET Benutzersteuerelemente in eine BasePartialCachingControl Instanz einbetten. Die BasePartialCachingControl Klasse stellt ein Benutzersteuerelement dar, das die Ausgabezwischenspeicherung aktiviert hat. 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 nicht über einen zugeordneten BasePartialCachingControlWert verfügt. Um zu ermitteln, ob eine UserControl Instanz das Zwischenspeichern unterstützt, ohne Ausnahmen zu generieren, überprüfen Sie die SupportsCaching Eigenschaft.
Die Verwendung der ControlCachePolicy Klasse ist eine von mehreren Möglichkeiten, die Ausgabezwischenspeicherung zu aktivieren. In der folgenden Liste werden Methoden beschrieben, mit denen Sie die Ausgabezwischenspeicherung aktivieren können:
Verwenden Sie die
@ OutputCacheDirektive, um die Ausgabezwischenspeicherung in deklarativen Szenarien zu aktivieren.Verwenden Sie das PartialCachingAttribute Attribut, um das Zwischenspeichern 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 mit einer der vorherigen Methoden zwischengespeichert und mithilfe der TemplateControl.LoadControl Methode dynamisch geladen wurden. Eine ControlCachePolicy Instanz kann nur zwischen den
InitPhasenPreRenderdes Steuerelementlebenszyklus erfolgreich bearbeitet werden. Wenn Sie ein ControlCachePolicy Objekt nach derPreRenderPhase ändern, löst ASP.NET eine Ausnahme aus, da änderungen, die nach dem Rendern des Steuerelements vorgenommen wurden, keine Auswirkungen auf die Cacheeinstellungen haben können (ein Steuerelement wird während derRenderPhase zwischengespeichert). Schließlich ist eine Benutzersteuerelementinstanz (und damit sein ControlCachePolicy Objekt) nur für die programmgesteuerte Manipulation verfügbar, wenn sie tatsächlich gerendert wird.
Eigenschaften
| Name | Beschreibung |
|---|---|
| Cached |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die Fragmentzwischenspeicherung für das Benutzersteuerelement aktiviert ist. |
| Dependency |
Ruft eine Instanz der Klasse ab, die CacheDependency der Ausgabe des zwischengespeicherten Benutzersteuerelements zugeordnet ist, oder legt diese fest. |
| Duration |
Ruft ab oder legt fest, wie lange zwischengespeicherte Elemente im Ausgabecache verbleiben sollen. |
| ProviderName |
Dient zum Abrufen oder Festlegen des Namens des Ausgabecacheanbieters, der einer Steuerelementinstanz zugeordnet ist. |
| SupportsCaching |
Ruft einen Wert ab, der angibt, ob das Benutzersteuerelement das Zwischenspeichern unterstützt. |
| VaryByControl |
Dient zum Abrufen oder Festlegen einer Liste von Steuerelementbezeichnern, um die zwischengespeicherte Ausgabe zu variieren. |
| VaryByParams |
Dient zum Abrufen oder Festlegen einer Liste von |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| SetExpires(DateTime) |
Weist das BasePartialCachingControl Steuerelement an, das das Benutzersteuerelement umschließt, den Cacheeintrag am angegebenen Datum und zu der angegebenen Uhrzeit abläuft. |
| SetSlidingExpiration(Boolean) |
Weist das BasePartialCachingControl Steuerelement an, das das Benutzersteuerelement umschließt, den Cacheeintrag des Benutzersteuerelements so festzulegen, dass das Gleit- oder absolute Ablaufdatum verwendet wird. |
| SetVaryByCustom(String) |
Legt eine Liste von benutzerdefinierten Zeichenfolgen fest, die der Ausgabecache verwendet, um das Benutzersteuerelement zu variieren. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |