在我的网站上有一个页面,用户可以在其中查看他们需要进行的所有付款的列表,选择文件并进行付款。我遇到的问题是,如果用户对文件进行付款,然后输入付款网格页面的URL,则会显示缓存页面,但仍显示已付款的文件,允许用户提交第二笔付款。我想要做的是总是通过控制器,所以如果用户键入此URL,他们将重新生成模型,这个文件将不再出现。有没有办法转换某个页面的缓存?关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
您可以创建自定义操作过滤器来设置正确的响应标头,以指示浏览器不要缓存页面结果:
public class DisableCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
var cache = filterContext.HttpContext.Response.Cache;
cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
cache.SetNoStore();
cache.SetExpires(DateTime.UtcNow.AddDays(-1));
cache.SetValidUntilExpires(false);
cache.SetCacheability(HttpCacheability.NoCache);
}
}
然后用这个属性装饰控制器动作:
[DisableCache]
public ActionResult PerformPayment()
{
...
}