This documentation is archived and is not being maintained.

PartialCachingAttribute Class

Defines the metadata attribute that Web Forms user controls (.ascx files) use to indicate if and how their output is cached. This class cannot be inherited.

Namespace:  System.Web.UI
Assembly:  System.Web (in System.Web.dll)

[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class PartialCachingAttribute : Attribute

The PartialCachingAttribute attribute class marks user controls (.ascx files) that support fragment caching, and encapsulates the cache settings that ASP.NET uses when caching the control. Page and controls developers use the PartialCachingAttribute attribute to enable output caching for a user control in a code-behind file.

Using the PartialCachingAttribute is one of several ways you can enable output caching. The following list describes methods you can use to enable output caching.

  • Use the @ OutputCache directive to enable output caching in declarative scenarios.

  • Use the PartialCachingAttribute to enable caching for a user control in a code-behind file.

  • Use the ControlCachePolicy class to programmatically specify cache settings in programmatic scenarios in which you are working with BasePartialCachingControl instances.

If a user control contains an @ OutputCache directive or has a PartialCachingAttribute applied, the ASP.NET parser generates an instance of the PartialCachingControl class to wrap the user control.

For more information about ASP.NET caching, see ASP.NET Caching. For more information about using attributes, see Extending Metadata Using Attributes.

The following code example demonstrates using the PartialCachingAttribute. This example has three parts:

  • A partial class, ctlMine, that inherits from the UserControl base class and to which the PartialCachingAttribute attribute is applied.

  • A user control that is used with the ctlMine partial class.

  • A Web Forms page that hosts the user control.

The first part of the example demonstrates a partial class that inherits from the UserControl base class and to which the PartialCachingAttribute attribute is applied. In this example, the attribute specifies that the user control is to be cached for 20 seconds.

// [filename partialcache.cs] 
// Create a code-behind user control that is cached 
// for 20 seconds using the PartialCachingAttribute class. 
// This control uses a DataGrid server control to display 
// XML data. 
using System;
using System.IO;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Samples.AspNet.CS.Controls

    // Set the PartialCachingAttribute.Duration property to 20 seconds.
    public partial class ctlMine : UserControl

        protected void Page_Load(Object Src, EventArgs E)
            DataSet ds = new DataSet();

            FileStream fs = new FileStream(Server.MapPath("schemadata.xml"), FileMode.Open, FileAccess.Read);
            StreamReader reader = new StreamReader(fs);

            DataView Source = new DataView(ds.Tables[0]);
            // Use the LiteralControl constructor to create a new 
            // instance of the class.
            LiteralControl myLiteral = new LiteralControl();
            // Set the LiteralControl.Text property to an HTML 
            // string and the TableName value of a data source.
            myLiteral.Text = "<h6><font face=verdana>Caching an XML Table: " + Source.Table.TableName + " </font></h6>";
            MyDataGrid.DataSource = Source;

            TimeMsg.Text = DateTime.Now.ToString("G");


The second part of the example shows a user control that is used with the previous example to demonstrate user control caching.

<!-- The mark-up .ascx file that displays the output of
     the partialcache.cs user control code-behind file. -->
<%@ Control language="C#" inherits="Samples.AspNet.CS.Controls.ctlMine" CodeFile="partialcache.cs.ascx.cs" %>

  <ASP:DataGrid id="MyDataGrid" runat="server"

  <br />

  <i>Control last generated on:</i> <asp:label id="TimeMsg" runat="server" />

The third part of the example demonstrates a Web Forms page that hosts the user control.

<!-- The WebForms page that contains the user control generated
     by partialcache.cs. -->
<%@ Register TagPrefix="Acme" TagName="Cache" Src="partialcache.cs.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
<html xmlns="" >
<script language="C#" runat="server">

      void Page_Load(Object Src, EventArgs E ) {

          TimeMsg.Text = DateTime.Now.ToString("G");


<head runat="server">
    <title>ASP.NET Example</title>

  <form id="form1" runat="server">
    <Acme:Cache runat="server"/>
    <br />

    <i>Page last generated on:</i> <asp:label id="TimeMsg" runat="server" />



Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0