用参数来控制用户控件的缓存

本文介绍如何使用VaryByControl和VaryByParam参数控制ASP.NET用户控件的缓存,实现根据不同条件缓存不同版本的控件,提高页面加载效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用参数来控制用户控件的缓存

左直拳

用户控件有个好处就是可以利用缓存,在不实施缓存的页面中实现部分缓存。

可是有时候同一个用户控件,放在不同的页面,又需要它可以表现出不同的样式,或提供不同的功能。

这时跟缓存有冲突吗?

伟大的微软告诉我们,可以在控件缓存设置中声明VaryByControl VaryByParam

VaryByParam 我还没用过,估计就是根据包含该控件的页面中指定的参数值,如?f=1&u=0之类,针对不同值,缓存不同的版本。

我用的是VaryByControl ,在控件内或包含该控件的页面内放置一个其他控件,如文本框(textbox),VaryByControl=该控件的ID”,这样这个控件的值不同,用户控件的缓存就不同。

然而直接访问用户控件内部的控件是不方便的,或者也不严谨。可以在用户控件内设置一个属性,通过该属性来间接访问和控制该控件。如:

页面:

<%@ OutputCache Duration="1800" VaryByControl="txtCssStyle" Shared="true"%>

……

<input type="hidden" id="txtCssStyle" runat="server" value="" />

……

<%if (CssStyle != "2")

{ %>

你老豆

<%}else{%>

你老母

<%}%>

代码:

#region 属性

public string CssStyle

{

get

{

return txtCssStyle.Value;

}

set

{

txtCssStyle.Value = (value == "2") ? "2" : "";

}

}

#endregion

调用页面1

<uc2:DirectShow ID="DirectShow1" runat="server" CssStyle="1" />

调用页面2

<uc2:DirectShow ID="DirectShow1" runat="server" CssStyle="2" />

这样在第一次打开页面1和页面2时,就各自获得一份缓存,并且按照不同的要求,表现出不同的样式和动作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值