Condividi tramite


Cenni preliminari sul controllo server Web Substitution

Aggiornamento: novembre 2007

Il controllo Substitution consente di creare, all'interno della pagina, delle aree che possono essere aggiornate in modo dinamico e quindi integrate nella pagina memorizzata nella cache.

Vengono illustrati i seguenti argomenti:

  • Scenari

  • Background

  • Esempi di codice

  • Riferimento alle classi

Scenari

Utilizzare il controllo Substitution per specificare una sezione di una pagina Web memorizzata nella cache di output in cui visualizzare il contenuto dinamico. Il controllo Substitution offre una soluzione semplificata alla memorizzazione parziale nella cache per le pagine in cui la maggior parte del contenuto è inserita nella cache. È possibile memorizzare nella cache di output l'intera pagina e quindi utilizzare i controlli Substitution per specificare le parti che sono esenti dall'inserimento nella cache. Le aree inserite nella cache vengono eseguite una sola volta e lette a partire dalla cache finché la voce della cache non scade o non viene cancellata. Le aree dinamiche vengono eseguite ogni volta che viene richiesta la pagina. Questo modello di inserimento nella cache semplifica il codice per le pagine che sono principalmente statiche, poiché non è necessario incapsulare le sezioni da inserire nella cache in controlli utente Web. Questo modello di inserimento nella cache ad esempio è utile nel caso di una pagina con contenuto statico, come storie di cronaca, e un controllo AdRotator che visualizza annunci. Le storie di cronaca non cambiano frequentemente e possono pertanto essere inserite nella cache. Tuttavia, ogni volta che l'utente richiede la pagina, si desidera visualizzare un nuovo annuncio. Il controllo AdRotator supporta direttamente la sostituzione successiva all'inserimento nella cache ed esegue il rendering di un nuovo annuncio ogni volta che viene eseguito il postback della pagina, indipendentemente dall'inserimento della pagina nella cache.

Torna all'inizio

Background

Per impostazione predefinita, l'inserimento nella cache di una pagina ASP.NET comporta la memorizzazione dell'intero output di pagina. Alla prima richiesta, la pagina viene eseguita e il relativo output memorizzato nella cache. Le richieste successive vengono soddisfatte dalla cache, senza che il codice incluso nella pagina venga eseguito.

In alcuni casi può essere opportuno memorizzare una pagina ASP.NET nella cache, ma aggiornarne determinate parti a ogni richiesta. Può ad esempio essere utile memorizzare nella cache la maggior parte del codice incluso in una pagina, ma avere la possibilità di aggiornare in modo dinamico le informazioni che dipendono dal tempo.

Per inserire contenuto dinamico nella pagina memorizzata nella cache è possibile utilizzare il controllo Substitution. Tale controllo non esegue il rendering di tag, ma deve essere associato a un metodo presente nella pagina o in un controllo utente padre. Creare un metodo statico in modo che restituisca le informazioni da inserire nella pagina. Il metodo chiamato dal controllo Substitution deve soddisfare i seguenti criteri:

  • Deve essere un metodo statico (condiviso in Visual Basic).

  • Deve accettare un parametro di tipo HttpContext.

  • Deve restituire un valore di tipo String.

Gli altri controlli della pagina non sono accessibili al controllo Substitution. In altri termini, tramite questo controllo non è possibile esaminare né modificare i valori di altri controlli. È tuttavia possibile accedere al contesto della pagina corrente utilizzando il parametro passato al codice.

Quando la pagina viene eseguita, il controllo Substitution chiama il metodo e sostituisce il valore restituito dal metodo al controllo Substitution presente nella pagina.

Torna all'inizio

Esempi di codice

Nell'esempio seguente viene illustrato come utilizzare il controllo Substitution per creare contenuto aggiornato in modo dinamico in una pagina memorizzata nella cache. Mediante il codice nell'evento Load della pagina viene aggiornato un controllo Label in base all'ora corrente. La durata della memorizzazione in cache della pagina è impostata su 60 secondi: pertanto, anche se la pagina viene richiesta più volte durante questo intervallo di tempo, il testo del controllo Label rimarrà invariato per tutti i 60 secondi. Un controllo Substitution all'interno della pagina chiama il metodo statico GetTime, che restituisce l'ora corrente come stringa. A ogni aggiornamento della pagina, viene aggiornato anche il valore rappresentato dal controllo Substitution.

<%@ Page Language="VB" %>
<%@ OutputCache Duration=60 VaryByParam="None" %>

<script >
    Sub Page_Load()
        Label1.Text = DateTime.Now.ToString()
    End Sub

    Public Shared Function GetTime(ByVal context As HttpContext) _
            As String
        Return DateTime.Now.ToString()
    End Function
</script>

<html>
<head ></head>
<body>
    <form id="form1" >
    <div>
    <p>
    <asp:Label  ID="Label1" />
    </p>
    <p>
    <asp:Substitution  
        ID="Substitution1" 
        MethodName="GetTime" />
    </p>
    <p>
    <asp:Button  ID="Button1" Text="Submit"/>
    </p>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#" %>
<%@ OutputCache Duration=60 VaryByParam="None" %>

<script >
    void Page_Load()
    {
        Label1.Text = DateTime.Now.ToString();
    }
    
    public static String GetTime(HttpContext context)
    {
      return DateTime.Now.ToString();
    }
</script>
<html>
<head ></head>
<body>
    <form id="form1" >
    <div>
    <p>
    <asp:Label  ID="Label1" />
    </p>
    <p>
    <asp:Substitution  
        ID="Substitution1" 
        MethodName="GetTime" />
    </p>
    <p>
    <asp:Button  ID="Button1" Text="Submit"/>
    </p>
    </div>
    </form>
</body>
</html>

Torna all'inizio

Riferimento alle classi

Nella tabella riportata di seguito sono elencate le classi correlate al controllo Substitution.

Membro

Descrizione

Substitution

La classe principale per il controllo.

Torna all'inizio

Vedere anche

Concetti

Aggiornamento dinamico di parti di una pagina memorizzata nella cache