在用户控件和VaryByControl中使用缓存

时间:2011-11-06 11:30:49

标签: asp.net caching outputcache

我的asp.net应用程序中有一个用户控件,可以从缓存中加载数据。我想要在更改变量值时更新缓存,因此我将此代码放在页面指令

 <%@ OutputCache Duration="1000" VaryByParam="none"
 VaryByControl="visitIsAu" %>

当我像这样更改标记中的变量值时,它可以正常工作

 visitIsAu="true"

但是当通过代码隐藏更改值时,它不起作用

   visitIsAu="<%=this.CurentUser.IsAuthorizedToVisitFiltered%>"

变量的值不会改变,因此其缓存不会更新。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

出于某种原因,我从未信任ASP.NET使用标记设置或在aspx文件上使用“注入”服务器标记来处理缓存的方式。我知道它有效,但在简单场景下控制起来很容易。

在使用用户控件时,我总是在代码隐藏级别实现缓存控制,并考虑到页面生命周期可能有一些捕获,这取决于我有一定页面的控件级别。

我们可以:ascx&gt; aspx或ascx&gt; aspx&gt;主

在您的情况下,您需要保证在加载用户控件之前设置CurrentUser。检查是否使用debug。