在MVC3中禁用部分视图的缓存我遇到了一个问题,即在不应缓存的情况下缓存了部分视图。此部分视图用于在页面上显示登录/注销。它使用下面的简单代码来确定显示哪个链接我的大多数控制器都定义了输出缓存,这样我就可以利用缓存的内容。[OutputCache(Duration=86400,VaryByParam="*")]现在我的问题是当我不想要部分视图时整个页面被缓存。这导致了错误的行为,它有时会显示注销等,即使用户没有登录。有没有办法缓存除相关部分视图之外的所有内容?您正在寻找的是甜甜圈缓存。这是一篇很棒的文章,解释了它是什么以及如何使其工作http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3您可以通过装饰禁用缓存显示_HeaderView部分的控制器:[OutputCache(NoStore=true,Duration=0,VaryByParam="*")]publicActionResultHeaderView(){returnPartialView("_HeaderView");我们应该在Web.config文件中设置缓存配置文件,而不是在页面中单独设置缓存值,避免冗余代码。我们可以使用OutputCache属性的CacheProfile属性来引用配置文件。此缓存配置文件将应用于所有页面,除非页面/方法覆盖这些设置。如果要从返回部分视图[_HeaderView]的操作中禁用缓存,您可以通过修改特定操作方法来覆盖配置缓存设置,如下所示:[OutputCache(NoStore=true,Duration=0,VaryByParam="*")]publicActionResultRenderPartialView(){returnPartialView("_HeaderView");希望这对你有帮助!这对我有用..publicActionResultLogOff(){AuthenticationManager.SignOut();varurl=Url.Action("Index","Web");HttpResponse.RemoveOutputCacheItem(网址);returnRedirectToAction("Index","Web");回到MVC后,我花了一段时间才弄明白这一点。只需将Cache设置直接放在PartialHeaderView中即可。与显示用户名时相同。不需要全局或服务器端代码。唯一的问题是一旦页面被缓存,它不会在登录后立即刷新。但是,我们会在最初的产品巡回演出中保持最新状态。在我们的案例中,我们可以权衡以上是C#学习教程:在MVC3中的某些视图上禁用缓存的所有内容分享,如果对大家有用,需要进一步了解C#学习教程,希望大家多多付出注意—@if(Request.IsAuthenticated){@*当我们通过身份验证时,请不要再缓存!*@HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);HttpContext.Current.Response.Cache.SetNoStore();HttpContext.Current.Response.Cache.SetNoServerCaching();@*@HttmlTime。Now.ToString())*@@Html.ActionLink("欢迎"+(String.IsNullOrEmpty((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirstValue("用户名"))?User.Identity.Name:((System.Security.Claims.ClaimsIdentity)User.Identity).FindFirstValue("UserName")),"Index","Manage",routeValues:new{Area="Store"},htmlAttributes:new{title="Manage"”})}其他{}本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处:
