Отключить кэширование на уровне страницы в пользовательском элементе управления - PullRequest
8 голосов
/ 23 июля 2010

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

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

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

1 Ответ

4 голосов
/ 23 июля 2010

Вариант один

Используйте Элемент управления заменой или 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), и это только отображаемый результат вызова, который изменяется между страницами.

...