MVC кнопка возврата - PullRequest
       2

MVC кнопка возврата

0 голосов
/ 12 июля 2011

У меня есть метод действия, который мне нужно выполнить при нажатии кнопки «Назад».Я сделал это раньше, отключив кэш в моем методе действия (Response.Cache.SetCacheability (HttpCacheability.NoCache). Это не работает для другого метода действия. По какой-то причине, когда я отключаю кэш и нажимаю кнопку "Назад"чтобы вызвать мой метод действия, срок действия страницы истекает. Есть идеи по поводу этой проблемы?

Ответы [ 2 ]

8 голосов
/ 12 июля 2011

Попробуйте следующее, отлично подходит для меня:

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");
    }
}
1 голос
/ 12 июля 2011

На стороне сервера нет способа узнать, был ли запрос страницы результатом кнопки возврата или нет.

Скорее всего, предыдущий запрос был скорее постом, чем получением, и пост требует, чтобы вы опубликовали данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...