如何:根据参数缓存用户控件的多个版本

更新:2007 年 11 月

您可以通过两种方式来改变用户控件输出的缓存:

  • 指定用户控件名称以及一个查询字符串或窗体 POST 参数。可以通过使用 @ OutputCache 指令的 VaryByParam 属性以声明方式进行该指定。或者,可以通过设置用户控件代码中的 PartialCachingAttributeVaryByParams 属性以编程方式达进行该指定。

  • 指定用户控件中包含的 ASP.NET 服务器控件的 ID 属性。可以使用 VaryByControl 属性以声明方式执行该指定。或者,可以通过设置 PartialCachingAttribute 中的 VaryByControls 属性以编程方式进行该指定。

    z72yz1zs.alert_note(zh-cn,VS.90).gif说明:

    仅当用户控件回发并自行处理回发时,根据查询字符串或窗体 POST 参数将用户控件输出改变到缓存才有效。如果用户控件回发到包含页,则该类型的用户控件输出缓存将不能正常工作。

通过使用 VaryByControl 属性以声明方式缓存用户控件的多个版本

  1. 创建回发的用户控件。

  2. 在用户控件中,包括一个带有 DurationVaryByControl 属性的 @ OutputCache 指令。

    z72yz1zs.alert_note(zh-cn,VS.90).gif说明:

    如果在指令中使用 VaryByControl 属性,则不需要同时包括 VaryByParam 属性,虽然您也可以包括后者并将其设置为“None”。

  3. VaryByControl 属性设置为希望用户控件输出改变所依据的控件的 ID。

    例如,下面的 @ OutputCache 指令将用户控件的过期时间设置为 60 秒,并通过 ID 为 State 的 ASP.NET 服务器控件来改变控件输出:

    <%@ OutputCache Duration="60" VaryByControl="State" %>
    

通过使用 VaryByControls 属性以编程方式缓存用户控件的多个版本

  1. 在代码中,创建向自身回发的用户控件代码。

  2. 在用户控件代码的开头包括一个 PartialCachingAttribute

  3. 包括 Duration 参数的值,并将 VaryByControls 参数设置为希望用户控件输出改变所依据的用户控件中 ASP.NET 服务器控件的 ID 属性值。

    下面的代码示例将 Duration 设置为 60 秒并将 VaryByControls 设置为 State。该代码应包括在扩展 UserControl 类的代码之前。

    [PartialCaching(60, null, State, null)]
    
    <PartialCaching(60, null, State, null)>
    

通过使用 VaryByParam 属性以声明方式缓存用户控件的多个版本

  1. 创建向自身回发的用户控件。

  2. 在用户控件中,包括一个带有 DurationVaryByParam 属性的 @ OutputCache 指令。

    z72yz1zs.alert_note(zh-cn,VS.90).gif说明:

    如果将 VaryByControl 属性包括在用户控件的 @ OutputCache 指令中,则不需要同时包括 VaryByParam 属性。

  3. VaryByParam 属性设置为希望用户控件改变所依据的 GET 查询字符串或窗体 POST 参数。

    例如,下面的 @ OutputCache 指令将用户控件的过期时间设置为 60 秒,并通过名为 State 的窗体 POST 参数或查询字符串参数的值来改变控件的输出。

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

通过使用 VaryByParams 属性以编程方式缓存用户控件的多个版本

  1. 在代码中,创建向自身回发的用户控件代码。

  2. 在用户控件代码的开头包括一个 PartialCachingAttribute

  3. 包括 Duration 参数的值,并将 VaryByParams 参数设置为希望用户控件改变所依据的 GET 查询字符串或窗体 POST 参数。

    下面的代码示例将 Duration 设置为 60 秒,并将 VaryByParams 设置为名为 State 的窗体 POST 参数或查询字符串参数。该代码应包括在扩展 UserControl 类的代码之前。

    [PartialCaching(60, State, null, null)]
    
    <PartialCaching(60, State, null, null)>
    

请参见

任务

如何:使用声明性的属性缓存用户控件的多个版本

概念

ASP.NET 缓存概述

缓存 ASP.NET 页

缓存页的多个版本

缓存用户控件输出的多个版本