【发布时间】:2012-02-05 21:36:52
【问题描述】:
我在不应该缓存部分视图时遇到问题。此部分视图用于在页面上显示登录/注销。它使用下面的简单代码来确定要显示哪个链接
@if(Request.IsAuthenticated) {
<a href="@Url.Action("LogOff", "Account", new { area = "" })">Log Off</a>
}
else {
<a href="@Url.Action("LogOn", "Account", new { area = "" })">Log On</a>
}
这个部分视图是从我的 MVC3 应用程序中的所有页面调用的,使用
@Html.Partial("_HeaderView")
在我的大多数控制器中,我都定义了输出缓存,因此我可以利用缓存内容。
[OutputCache(Duration = 86400, VaryByParam = "*")]
现在我的问题是,当我不希望部分视图存在时,整个页面都被缓存了。这会导致错误的行为,即使用户未登录等,有时也会显示 LogOff。有没有办法缓存所有内容,除了有问题的部分视图?
【问题讨论】:
-
尼克,抱歉不得不在这里添加评论。无论如何,当我删除 Nostore 并将持续时间更改为 1 时它会起作用。现在唯一的问题是当用户登录时,他们会被带到主页但我必须明确刷新它才能使更改生效(以显示注销而不是登录)。
标签: c# asp.net-mvc-3 caching partial-views outputcache