Turn off page-level caching in a user control

前端 未结 1 896
名媛妹妹
名媛妹妹 2020-12-10 16:12

I have a page with the following caching defined:

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

I have a user control insid

相关标签:
1条回答
  • 2020-12-10 16:45

    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.

    0 讨论(0)
提交回复
热议问题