У меня есть метод действия, который мне нужно выполнить при нажатии кнопки «Назад».Я сделал это раньше, отключив кэш в моем методе действия (Response.Cache.SetCacheability (HttpCacheability.NoCache). Это не работает для другого метода действия. По какой-то причине, когда я отключаю кэш и нажимаю кнопку "Назад"чтобы вызвать мой метод действия, срок действия страницы истекает. Есть идеи по поводу этой проблемы?
Попробуйте следующее, отлично подходит для меня:
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"); } }
На стороне сервера нет способа узнать, был ли запрос страницы результатом кнопки возврата или нет.
Скорее всего, предыдущий запрос был скорее постом, чем получением, и пост требует, чтобы вы опубликовали данные.