我正在使用Sql server上传图片,上传的图片立即反映在下面的网格中。我的问题是,当我更改或编辑图片时,图片在数据库中被更改但网格显示上一张图片我已经删除了。我必须再次注销并再次查看更改。有没有办法来解决这个问题?有没有办法在每次网格重新加载时清除缓存?
答案 0 :(得分:0)
您可以尝试在下面的帖子中编写自己的属性,如[no-cache],并可以在控制器上使用它来防止缓存。
Prevent Caching in ASP.NET MVC for specific actions using an attribute
http://dotnetnsqlcorner.blogspot.co.uk/2012/09/disable-caching-for-controller-action.html?m=1
要禁用客户端缓存,您还可以在操作结果中使用[outputcacheattattribute]。以下帖子可能有所帮助。
[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)]
How can I disable client side and proxy caching in ASP.NET MVC?
还有其他方法可以禁用缓存,但我想上述两种方法之一应该可以完成。希望这有帮助
答案 1 :(得分:0)
您可以将特定捕获的持续时间用于项目:
看看这个: http://dotnet.dzone.com/articles/programmatically-clearing-0
如果使用Jquery-ajax在客户端形成缓存,则使用::
$.ajax({
cache: false
//rest of your ajax setup
});
答案 2 :(得分:0)
除了ajax调用中的cache: false
之外,您还可以定位操作方法并创建无缓存操作过滤器属性。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
}
这是很好的解释Here。希望它有所帮助。