Mega Code Archive

 
Categories / ASP.Net Tutorial / Cache
 

Varying the Output Cache by Parameter

The VaryByParam attribute causes a  new instance of a page to be cached when a different parameter is passed to the page.  File: Master.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <title>Master</title> </head> <body>     <form id="form1" runat="server">     <div>     <asp:GridView         id="grdProducts"         DataSourceID="srcProducts"         AutoGenerateColumns="false"         ShowHeader="false"         GridLines="none"         Runat="server">         <Columns>         <asp:HyperLinkField             DataTextField="Title"             DataNavigateUrlFields="Id"             DataNavigateUrlFormatString="~/Details.aspx?id={0}" />         </Columns>     </asp:GridView>     <asp:SqlDataSource         id="srcProducts"         ConnectionString="<%$ ConnectionStrings:Products %>"         SelectCommand="SELECT Id,Title FROM Products"         Runat="server" />     </div>     </form> </body> </html> File: Details.aspx <%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="id" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">     <title>Details</title> </head> <body>     <form id="form1" runat="server">     <div>     <%= DateTime.Now.ToString("T") %>     <hr />     <asp:DetailsView         id="dtlProduct"         DataSourceID="srcProducts"         Runat="server" />     <asp:SqlDataSource         id="srcProducts"         ConnectionString="<%$ ConnectionStrings:Products %>"         SelectCommand="SELECT * FROM Products             WHERE Id=@Id"         Runat="server">         <SelectParameters>             <asp:QueryStringParameter                 Name="Id"                 Type="int32"                 QueryStringField="Id" />         </SelectParameters>     </asp:SqlDataSource>     </div>     </form> </body> </html> You can assign two special values to the VaryByParam attribute: none: causes any query string or form parameters to be ignored.         *:    caches a new cached version whenever there is a change in query string or form parameter passed to the page. You can assign a semicolon-delimited list of parameters to the VaryByParam attribute.