2011-05-12 145 views
2

在我的网站上有一个页面,用户可以看到他们需要制作的所有付款列表,选择一个文件并进行付款。我遇到的问题是,如果用户在文件上进行付款,然后键入付款网格页面的URL,则缓存页面将显示仍然显示已支付的文件,从而允许用户提交第二笔付款。我想要做的是始终通过控制器,所以如果用户输入这个URL,他们将重新生成模型,这个文件将不再出现。有没有办法缓存某个页面的缓存?有关如何解决此问题的任何想法?ASP.NET MVC 1页面缓存问题

回答

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() 
{ 
    ... 
} 
+0

谢谢你,那正是我所需要的,它完美地工作。我很感激帮助。 – esastincy 2011-05-12 20:59:38