我有一个问题,部分 View 在不应该缓存的时候被缓存了。此部分 View 用于在页面上显示登录/注销。它使用下面的简单代码来确定要显示的链接
@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>
}
这个部分 View 是从我的 MVC3 应用程序中的所有页面调用的,使用
@Html.Partial("_HeaderView")
在我的大多数 Controller 中,我都定义了输出缓存,因此我可以利用缓存我的内容。
[OutputCache(Duration = 86400, VaryByParam = "*")]
现在我的问题是,当我不希望部分 View 被缓存时,整个页面都被缓存了。这会导致错误的行为,即使用户未登录等,它有时也会显示注销。有没有办法缓存所有内容,除了有问题的部分 View ?
最佳答案
您可以通过装饰显示您的 _HeaderView 部分的 Controller 来禁用缓存:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult HeaderView()
{
return PartialView("_HeaderView");
}
关于c# - 在 MVC 3 中禁用局部 View 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8786942/