我的asp.net应用程序中有一个用户控件,可以从缓存中加载数据。我想要在更改变量值时更新缓存,因此我将此代码放在页面指令
上 <%@ OutputCache Duration="1000" VaryByParam="none"
VaryByControl="visitIsAu" %>
当我像这样更改标记中的变量值时,它可以正常工作
visitIsAu="true"
但是当通过代码隐藏更改值时,它不起作用
visitIsAu="<%=this.CurentUser.IsAuthorizedToVisitFiltered%>"
变量的值不会改变,因此其缓存不会更新。
有谁知道为什么会这样?
答案 0 :(得分:1)
出于某种原因,我从未信任ASP.NET使用标记设置或在aspx文件上使用“注入”服务器标记来处理缓存的方式。我知道它有效,但在简单场景下控制起来很容易。
在使用用户控件时,我总是在代码隐藏级别实现缓存控制,并考虑到页面生命周期可能有一些捕获,这取决于我有一定页面的控件级别。
我们可以:ascx&gt; aspx或ascx&gt; aspx&gt;主
在您的情况下,您需要保证在加载用户控件之前设置CurrentUser。检查是否使用debug。