MVC Back button issue

前端 未结 2 414
情话喂你
情话喂你 2021-01-03 16:57

I have an action method that I need to execute when the back button is clicked. I\'ve done this before by disabling the cache in my action method (Response.Cache.SetCacheabi

相关标签:
2条回答
  • 2021-01-03 17:31

    There is no way to know, on the server side, if the page request was the result of the back button or not.

    More than likely, the previous request was a post rather than a get, and the post requires that you repost the data.

    0 讨论(0)
  • 2021-01-03 17:38

    Try the following, works great for me:

    public class NoCacheAttribute : ActionFilterAttribute
    {
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            var response = filterContext.HttpContext.Response;
            response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
            response.Cache.SetValidUntilExpires(false);
            response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
            response.Cache.SetCacheability(HttpCacheability.NoCache);
            response.Cache.SetNoStore();
        }
    }
    
    public class HomeController : Controller
    {
        [NoCache]
        public ActionResult Index()
        {
            // When we went to Foo and hit the Back button this action will be executed
            // If you remove the [NoCache] attribute this will no longer be the case
            return Content(@"<a href=""/home/foo"">Go to foo</a><div>" + DateTime.Now.ToLongTimeString() +  @"</div>", "text/html");
        }
    
        public ActionResult Foo()
        {
            return Content(@"<a href=""/home/index"">Go back to index</a>", "text/html");
        }
    }
    
    0 讨论(0)
提交回复
热议问题