c# - 在 MVC 3 中禁用局部 View 缓存

标签 c# asp.net-mvc-3 caching partial-views outputcache

我有一个问题,部分 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/

相关文章:

django - 如何在特定时间(例如午夜)清除 Django 模板缓存?

c# - 系统找不到从 ProcessStartInfo 指定的路径

c# - SignalR Core 如何每 n 秒向客户端发送消息

javascript - 如何将 ViewModel 属性传递给 ajax post 方法?

asp.net-mvc-2 - 你什么时候使用 View() 和 RedirectToAction

asp.net-mvc-3 - 如何在 MVC3 中构建复合 UI?

java - 带有事务的 Java 缓存

ruby方法缓存性能

c# - youtube api使用oauth token 在.NET中获取有关用户的信息

c# - 插件架构和共享接口(interface)问题