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.
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 mit dem Namen SimpleControl
angewendet, 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 auf einer Web Forms-Seite veranschaulicht. Um dieses Beispiel erfolgreich auszuführen, stellen Sie sicher, dass sich die Benutzersteuerelementdatei (ASCX), ihre 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 ein gültiges ControlCachePolicy Objekt nur, wenn das Benutzersteuerelement bereits von einem BasePartialCachingControl Steuerelement umschlossen ist. Wenn es nicht umschlossen wird, 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, die Ausgabezwischenspeicherung zu aktivieren. 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 mit einer der vorherigen Methoden cacheaktiviert und dynamisch mit der TemplateControl.LoadControl -Methode geladen wurden. Eine ControlCachePolicy Instanz kann nur zwischen den
Init
Phasen undPreRender
des Steuerungslebenszyklus erfolgreich bearbeitet werden. Wenn Sie ein ControlCachePolicy Objekt nach derPreRender
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 derRender
Phase zwischengespeichert). Schließlich ist eine Benutzersteuerelementinstanz (und damit ihr ControlCachePolicy Objekt) nur für programmgesteuerte Bearbeitungen verfügbar, 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 |
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) |