Отключить кэширование на уровне страницы в пользовательском элементе управления

У меня есть страница со следующим определением кэширования:

<%@ OutputCache Duration="60" VaryByParam="None" %>

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

1 ответ

Решение

Вариант первый

Используйте контроль замещения или API на своей странице. это позволяет вам кэшировать все на вашей странице, кроме части, содержащейся в элементе управления заменой.

http://msdn.microsoft.com/en-us/library/ms227429.aspx

Хороший способ использовать это - реализовать свой элемент управления в виде простого серверного элемента управления, который отображает html как строку, но делает это в контексте страницы (то есть с правильными идентификаторами клиента). У Скотта Гатри есть действительно хороший пример того, как это работает. Кстати, с вызовами AJAX тоже хорошо работает...

http://weblogs.asp.net/scottgu/archive/2006/10/22/Tip_2F00_Trick_3A00_-Cool-UI-Templating-Technique-to-use-with-ASP.NET-AJAX-for-non_2D00_UpdatePanel-scenarios.aspx

Отрывок из статьи Скотта Гу...

    [WebMethod]
    public string GetCustomersByCountry(string country)
    {
       CustomerCollection customers = DataContext.GetCustomersByCountry(country);

        if (customers.Count > 0)
            //RenderView returns the rendered HTML in the context of the callback
            return ViewManager.RenderView("customers.ascx", customers);
        else
            return ViewManager.RenderView("nocustomersfound.ascx");
    }

Вариант второй

Визуализируйте динамическое управление с помощью вызова AJAX при загрузке страницы. Таким образом, вы можете безопасно кешировать всю страницу (включая вызов AJAX), и это только отображаемый результат вызова, который изменяется между страницами.

Другие вопросы по тегам