Обновление страницы с помощью кнопки Chrome Back - ASP.net - PullRequest
9 голосов
/ 29 апреля 2010

У меня есть приложение ASP.net (c #).

Когда пользователь находится на определенной странице, он щелкает ссылку на этой странице, которая переводит его на дочернюю страницу с информацией о продукте.

Если пользователь нажимает кнопку возврата браузера, мне нужно обновить родительскую страницу до ее исходного состояния. т. е. все текстовые поля, в которых были введены данные, должны быть пустыми, все скрытые поля сбрасываться и т. д. В основном мне нужен CTRL-F5, когда пользователь нажимает кнопку назад.

Отключение кнопки «назад» не вариант.

Мне это нужно только на определенных страницах.

В IE и Firefox я могу заставить это работать без проблем. Но в Chrome текстовые поля все еще содержат свои значения, как и скрытые поля. Если я нажму CTRL-F5 в Chrome, страница вернется в исходное состояние.

Это код, который я пробовал.

<%@ OutputCache Location="None" VaryByParam="None" %>

и это:

   Response.Buffer = true;
   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetAllowResponseInBrowserHistory(false);
   Response.Cache.SetNoStore();

и это:

    Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
    Response.Cache.SetValidUntilExpires(false);
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetNoStore();

Я также пробовал различные из них в разных комбинациях, но безуспешно.

спасибо

Ответы [ 4 ]

6 голосов
/ 29 апреля 2010

При нажатии кнопки «Назад» в браузере поля «ВХОД» не сбрасываются браузером автоматически. Вместо этого браузер сохраняет введенные пользователем данные, что облегчает пользователям возможность вернуться назад и внести изменения во входные данные.

Вы не можете решить эту сторону сервера, потому что браузер обходит кеш для этого. Вместо этого вы можете использовать атрибут autocomplete="off" HTML в полях ввода для предотвращения их сохранения браузером.

Вы также можете вручную сбросить форму, используя JavaScript:

document.getElementById("form1").reset();
2 голосов
/ 06 марта 2012

Эти две строки решили проблему Chrome для меня:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

И я использую эту необязательную строку, чтобы сказать браузеру не создавать запись истории для каждого запроса на той же странице:

Response.Cache.SetAllowResponseInBrowserHistory(true);

Источники:

Самый популярный ответ в этом посте

Необязательная строка

0 голосов
/ 12 апреля 2017

Вы также можете поместить autocomplete = "off" в тег формы вместо каждого поля ввода.

0 голосов
/ 29 апреля 2010

Решение «грубой силы» заключается в том, чтобы разместить на странице некоторый javascript, который при загрузке страницы переводит данные в некоторое известное состояние. Таким образом, он находит все элементы и устанавливает данные на основе массива данных или объекта JSON. По первому запросу, так как в любом случае все по умолчанию, настройка не имеет значения. По запросу кнопки «назад», поскольку javascript все еще должен быть запущен, он сбрасывает все значения независимо от браузера.

Я не верю, что вы можете заставить браузер функционировать так, как вы его описали, поскольку каждый браузер должен реализовать кнопку возврата - Chrome делает это по-своему.

...