Как я могу узнать, нажал ли пользователь клавишу F5, чтобы обновить мою страницу (что-то вроде того, как реализовано SO. Если вы обновите свою страницу, счетчик вопросов не увеличится). Я протестировал много фрагментов кода, упомянутых в дюжине учебных пособий, но ни один из них не работал правильно.
Чтобы быть более понятным, предположим, что у меня есть пустая веб-форма и я хотел бы определить, нажал ли пользователь клавишу F5 на стороне клиента (в результате чего обновление не было отправлено) или нет.
Я могу использовать переменные сеанса, но если пользователь переходит на другую страницу моего сайта и затем возвращается, я хотел бы рассматривать его как новое посещение, а не как обновление. так что это не переменная области видимости.
Спасибо.
Обновление: Единственный обходной путь, который я смог найти, - это унаследовать мои страницы от базовой страницы, переопределить метод загрузки, как показано ниже:
public class PageBase : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.Session["LastViewedPage"] = Request.RawUrl;
}
}
и на каждой странице, если мне было интересно узнать, является ли это обновлением:
if (this.Session["LastViewedPage"].ToString() == Request.RawUrl)
{
// This is a refresh!
}