Turn off page-level caching in a user control

半世苍凉 提交于 2019-11-27 06:12:38

问题


I have a page with the following caching defined:

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

I have a user control inside that page that i don't want cached. How can I turn it off just for that control?


回答1:


Option One

Use the Substitution control or API on your page. this enables you to cache everything on your page except the part contained within the substitution control.

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

One nice way to use this is to implement your control as a simple server control which renders the html as a string, but does so in the context of the page (that is with the correct Client IDs). Scott Guthrie has a really nice example of how this works. Works nicely with AJAX calls too by the way...

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

Excerpt from Scott Gu's article...

    [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");
    }

Option Two

Render the dynamic control via an AJAX call on the page load. This way, you can safely cache the entire page (including the AJAX call) and it is only the rendered result of the call that changes between pages.



来源:https://stackoverflow.com/questions/3318570/turn-off-page-level-caching-in-a-user-control

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!