Compartir a través de


Información general sobre Substitution (Control de servidor Web)

Actualización: noviembre 2007

El control Substitution se utiliza en páginas Web ASP.NET que se han configurado para almacenarse en memoria caché. El control Substitution permite crear áreas en la página que se pueden actualizar dinámicamente para integrarse después en la página de la caché.

Actualización dinámica de fragmentos de una página almacenada en memoria caché

Cuando una página ASP.NET se almacena en memoria caché, el resultado completo de la página se guarda en la caché de manera predeterminada . Durante la primera solicitud, la página se ejecuta y almacena en memoria caché su resultado. En las solicitudes siguientes, la solicitud se realiza desde la caché y el código de la página no se ejecuta.

Puede ocurrir que en determinadas circunstancias desee almacenar en memoria caché una página ASP.NET pero su intención sea actualizar los fragmentos seleccionados de la página en cada solicitud. Por ejemplo, es posible que desee almacenar en memoria caché la mayor parte de una página pero a la vez poder actualizar la información de la página que varía con el tiempo.

Puede utilizar el control Substitution para insertar el contenido dinámico en la página almacenada en memoria caché. El control Substitution no representa ningún marcado. En su lugar, debe enlazar el control a un método de la página o a un control de usuario primario. Cree el método estático de modo que devuelva cualquier información que desee insertar en la página. El método llamado por el control Substitution debe cumplir los criterios siguientes:

  • Estar definido como un método estático (compartido en Visual Basic).

  • Aceptar un parámetro de tipo HttpContext.

  • Devolver un valor de tipo String.

Tenga en cuenta que el control Substitution no puede tener acceso a otros controles de la página; es decir, no es posible examinar o modificar el valor de otros controles. Sin embargo, el código tiene acceso al contexto de la página actual a través del parámetro que se le ha transferido.

Cuando la página se ejecuta, el control Substitution llama al método y, a continuación, sustituye el valor devuelto desde el método por el control Substitution de la página.

En el ejemplo de código siguiente se muestra cómo se utiliza el control Substitution para crear contenido actualizado de forma dinámica en una página almacenada en memoria caché. El código del evento Load de la página actualiza un control Label con la hora actual. Dado que la duración del almacenamiento en caché de la página se establece en 60 segundos, el texto del control Label no se modifica aunque la página se solicite varias veces durante este período de 60 segundos. Un control Substitution de la página llama al método estático GetTime, que devuelve la hora actual en forma de cadena. Cada vez que se actualiza la página, el valor representado por el control Substitution se actualiza.

<%@ 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>

Vea también

Conceptos

Actualización dinámica de fragmentos de una página almacenada en memoria caché