ControlCachePolicy Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce l'accesso a livello di codice alle impostazioni della cache di output di un controllo utente ASP.NET.
public ref class ControlCachePolicy sealed
public sealed class ControlCachePolicy
type ControlCachePolicy = class
Public NotInheritable Class ControlCachePolicy
- Ereditarietà
-
ControlCachePolicy
Esempio
Nell'esempio di codice seguente viene illustrato il modo in cui un controllo utente può essere caricato in modo dinamico e modificato a livello di codice in fase di esecuzione. L'attributo PartialCachingAttribute viene applicato a un controllo utente denominato SimpleControl
, il che significa che il controllo utente viene sottoposto a wrapping da un PartialCachingControl controllo in fase di esecuzione. Le SimpleControl
impostazioni di memorizzazione nella cache dell'oggetto possono essere modificate a livello di codice tramite l'oggetto PartialCachingControl associatoControlCachePolicy, disponibile tramite un riferimento al controllo che lo esegue a capo. In questo esempio, la proprietà viene esaminata durante l'inizializzazione Duration della pagina e modificata utilizzando i SetSlidingExpiration metodi e SetExpires se vengono soddisfatte alcune condizioni.
<%@ 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>
Nell'esempio di codice seguente viene illustrato l'utilizzo del SimpleControl
controllo utente da una pagina Web Form. Per eseguire correttamente questo esempio, verificare che il file di controllo utente (con estensione ascx), il relativo file code-behind (.cs o .vb) e la pagina Web Form che ospita il controllo utente (.aspx) si trovino nella stessa directory.
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>
Commenti
La ControlCachePolicy classe viene usata dagli sviluppatori in scenari di controllo utente programmatici per specificare le impostazioni di memorizzazione nella cache di output per i controlli utente (file con estensione ascx). ASP.NET incorpora i controlli utente all'interno di un'istanza BasePartialCachingControl di . La BasePartialCachingControl classe rappresenta un controllo utente con memorizzazione nella cache di output abilitata. Quando si accede alla BasePartialCachingControl.CachePolicy proprietà di un PartialCachingControl controllo, si riceverà sempre un oggetto valido ControlCachePolicy . Tuttavia, se si accede alla UserControl.CachePolicy proprietà di un UserControl controllo, si riceve un oggetto valido ControlCachePolicy solo se il controllo utente è già sottoposto a wrapping da un BasePartialCachingControl controllo . Se non è sottoposto a wrapping, l'oggetto ControlCachePolicy restituito dalla proprietà genererà eccezioni quando si tenta di modificarlo perché non dispone di un oggetto associato.BasePartialCachingControl Per determinare se un'istanza UserControl di supporta la memorizzazione nella cache senza generare eccezioni, esaminare la SupportsCaching proprietà .
L'uso della classe è uno dei diversi modi in cui è possibile abilitare la ControlCachePolicy memorizzazione nella cache dell'output. L'elenco seguente descrive i metodi che è possibile usare per abilitare la memorizzazione nella cache dell'output:
Usare la direttiva per abilitare la
@ OutputCache
memorizzazione nella cache di output in scenari dichiarativi.Usare l'attributo per abilitare la PartialCachingAttribute memorizzazione nella cache per un controllo utente in un file code-behind.
Usare la ControlCachePolicy classe per specificare le impostazioni della cache in scenari programmatici in cui si usano BasePartialCachingControl istanze abilitate per la cache usando uno dei metodi precedenti e caricate dinamicamente usando il TemplateControl.LoadControl metodo . Un'istanza ControlCachePolicy può essere modificata correttamente solo tra le
Init
fasi ePreRender
del ciclo di vita del controllo. Se si modifica un ControlCachePolicy oggetto dopo laPreRender
fase, ASP.NET genera un'eccezione, perché tutte le modifiche apportate dopo il rendering del controllo non possono influire effettivamente sulle impostazioni della cache (un controllo viene memorizzato nella cache durante laRender
fase). Infine, un'istanza del controllo utente (e quindi il relativo ControlCachePolicy oggetto) è disponibile solo per la manipolazione a livello di codice quando viene effettivamente eseguito il rendering.
Proprietà
Cached |
Ottiene o imposta un valore che indica se la cache a livello di frammento è attivata per il controllo utente. |
Dependency |
Ottiene o imposta un'istanza della classe CacheDependency associata all'output del controllo utente memorizzato nella cache. |
Duration |
Ottiene o imposta il periodo di tempo per cui gli elementi devono rimanere nella cache di output. |
ProviderName |
Ottiene o imposta il nome del provider della cache di output associato a un'istanza del controllo. |
SupportsCaching |
Ottiene un valore che indica se il controllo supporta l'inserimento nella cache. |
VaryByControl |
Ottiene o imposta un elenco di identificatori di controllo in base ai quali variare l'output inserito nella cache. |
VaryByParams |
Ottiene o imposta un elenco di nomi di parametro |
Metodi
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
SetExpires(DateTime) |
Indica al controllo BasePartialCachingControl che esegue il wrapping del controllo utente di far scadere la voce della cache alla data e all'ora specificate. |
SetSlidingExpiration(Boolean) |
Indica al controllo BasePartialCachingControl che esegue il wrapping del controllo utente di impostare la voce della cache del controllo utente per l'utilizzo di una scadenza assoluta o variabile. |
SetVaryByCustom(String) |
Imposta un elenco di stringhe personalizzate che verrà utilizzato dalla cache di output per variare il controllo utente. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |