Поделиться через


Общие сведения о серверном веб-элементе управления Substitution

Обновлен: Ноябрь 2007

Элемент управления Substitution предназначен для создания на странице областей, которые могут динамически обновляться и затем встраиваться в кэшируемую страницу.

В этом разделе рассматриваются следующие темы:

  • Сценарии

  • Базовые сведения

  • Примеры кода

  • Ссылки на классы

Сценарии

Элемент управления Substitution используется для определения раздела на кэшируемой веб-странице, в котором отображается динамическое содержимое. Элемент управления Substitution предлагает простое решение для частичного кэширования страниц, большая часть содержимого которых уже кэширована. Можно выполнить кэширование всей страницы, а затем с помощью элемента управления Substitution указать те ее части, которые не включаются в процесс кэширования. Кэшированные области исполняются только один раз и затем считываются из кэша до тех пор, пока не истекает срок действия записи кэша или пока она не удаляется. Динамические области исполняются при каждом запросе страницы. Использование данной модели кэширования позволяет упростить код страниц, которые являются преимущественно статическими, поскольку не требуется инкапсулировать разделы, кэшируемые в пользовательских веб-элементах управления. Например, данная модель кэширования может использоваться в сценарии, когда имеется страница, содержащая статическое содержимое, например новости, и элемент управления AdRotator, отображающий рекламные объявления. Новости обновляются достаточно редко, что позволяет кэшировать их. Однако при каждом запросе страницы необходимо отображать новое рекламное объявление. Элемент управления AdRotator напрямую поддерживает замену после кэширования и отображает новое рекламное объявление при каждой обратной передаче страницы независимо от того, выполнено ли ее кэширование.

К началу

Базовые сведения

При кэшировании страницы ASP.NET по умолчанию кэшируются все выводимые данные. При первом запросе выполняется запуск страницы и кэширование выводимых на ней данных. При последующих запросах страница заполняется из кэша, а размещенный на ней код не выполняется.

В некоторых случаях необходимо выполнить кэширование страницы ASP.NET, а затем при каждом запросе обновлять только определенные ее части. Например, можно кэшировать большую часть содержимого страницы и обеспечить возможность динамического обновления связанной со временем информации на ней.

Элемент управления Substitution можно использовать для вставки динамического содержимого на кэшируемую страницу. Элемент управления Substitution не поддерживает отображение разметки. Вместо этого элемент управления привязывается к методу страницы или родительского пользовательского элемента управления. В этом случае создается статический метод, возвращающий данные, которые необходимо вставить на страницу. Метод, вызываемый элементом управления Substitution, должен отвечать следующим требованиям:

  • метод должен являться статическим (общим в Visual Basic);

  • метод должен принимать параметр типа HttpContext;

  • метод должен возвращать значение типа String.

Элементу управления Substitution недоступны другие элементы управления на странице, то есть их значения нельзя просмотреть или изменить. Однако доступ к контексту текущей страницы из кода возможен и осуществляется с помощью передаваемого в него параметра.

При выполнении страницы элемент управления Substitution вызывает метод и подставляет значение, возвращаемое методом для элемента Substitution страницы.

К началу

Примеры кода

В следующем примере показан порядок использования элемента управления Substitution для создания динамически обновляемого содержимого кэшируемой страницы. Код в событии Load страницы используется для обновления элемента управления Label и присваивания ему текущего значения времени. Поскольку интервал кэширования страницы составляет 60 секунд, текст элемента управления Label не будет изменяться даже при многократном запросе страницы в течение 60-секундного периода. Элемент управления Substitution страницы вызывает статический метод GetTime, который возвращает текущее значение времени в виде строки. При каждом обновлении страницы обновляется значение, представляемое элементом управления Substitution.

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

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

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

К началу

Ссылки на классы

В следующей таблице перечислены классы, связанные с элементом управления Substitution.

Член

Описание

Substitution

Основной класс элемента управления.

К началу

См. также

Основные понятия

Динамическое обновление части кэшированной страницы