This documentation is archived and is not being maintained.

HttpResponseSubstitutionCallback Delegate

Represents the method that handles post-cache substitution.

Namespace:  System.Web
Assembly:  System.Web (in System.Web.dll)

public delegate string HttpResponseSubstitutionCallback(
	HttpContext context


Type: System.Web.HttpContext

The HttpContext that contains the HTTP request information for the page with the control that requires post-cache substitution.

Return Value

Type: System.String
The content inserted into the cached response before being sent to the client.

The HttpResponseSubstitutionCallback delegate, in combination with the WriteSubstitution method, is used for rendering post-cache content for the Substitution and AdRotator controls.

For the Substitution control, use the MethodName property to specify the name of the callback method to invoke when the Substitution control executes. The callback method that you specify must be a static method on the page or on the user control that contains the Substitution control. The signature for the callback method must match the signature for an HttpResponseSubstitutionCallback delegate that takes an HttpContext parameter and returns a string.

For the AdRotator control, rendering is independent of the page caching unless an event handler is provided for the AdCreated event. If no AdCreated event handler is present, post-cache substitution is used to render the AdRotator content.

The following code example demonstrates how to add a Substitution control programmatically to an output-cached Web page. When the page loads, the current date and time are displayed to the user in a label. This section of the page is cached and updated every 60 seconds. When the Substitution control executes, it calls the GetCurrentDateTime method, which must match the signature for the HttpResponseSubstitutionCallback delegate. The string that is returned by the GetCurrentDateTime method is displayed to the user. This section of the page is not cached and is updated each time the page is refreshed. The MethodName property of the Substitution control gets or sets the name of the callback method.

<%@ outputcache duration="60" varybyparam="none" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
<script runat="server" language="C#">  

  void Page_Load(object sender, System.EventArgs e)
    // Programmatically create a Substitution control.
    Substitution Substitution1 = new Substitution();

    // Specify the callback method.
    Substitution1.MethodName = "GetCurrentDateTime";

    // Add the Substitution control to the controls 
    // collection of PlaceHolder1.
    PlaceHolder1.Controls.Add (Substitution1);        

    // Display the current date and time in the label. 
    // Output caching applies to this section of the page.
    CachedDateLabel.Text = DateTime.Now.ToString();    

  // The Substitution control calls this method to retrieve 
  // the current date and time. This section of the page 
  // is exempt from output caching.  
  public static string GetCurrentDateTime (HttpContext context)
    return DateTime.Now.ToString ();


<html xmlns="" >
<head id="Head1" runat="server">
  <title>Substitution Class Example</title>
  <form id="Form1" runat="server">

    <h3>Substitution Constructor Example</h3>  

    <p>This section of the page is not cached:</p>
    <asp:placeholder id="PlaceHolder1"

    <br />

    <p>This section of the page is cached:</p>

    <asp:label id="CachedDateLabel"

    <br /><br />

    <asp:button id="RefreshButton"
      text="Refresh Page"


Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0