Jak mogę się dowiedzieć, czy użytkownik nacisnął klawisz F5, aby odświeżyć moją stronę (Coś takiego, jak zaimplementowano SO. Jeśli odświeżysz stronę, licznik pytań nie zostanie zwiększony). Przetestowałem wiele fragmentów kodu wymienionych w kilkunastu samouczkach, ale żaden z nich nie działał poprawnie.Wykryj odświeżanie przeglądarki
Aby być bardziej zrozumiałym, załóżmy, że mam pusty formularz internetowy i chciałbym sprawdzić, czy użytkownik nacisnął klawisz F5 po stronie klienta (powodując, że odświeżanie nie zostanie wysłane), czy też nie.
Mogę używać zmiennych sesji, ale jeśli użytkownik przejdzie na inną stronę mojej witryny, a następnie wróci, chciałbym ją uznać za nową, a nie odświeżoną. więc nie jest to zmienna zakresu sesji.
Dzięki.
Aktualizacja: Jedyne obejście mogłem znaleźć było dziedziczyć moich stron ze strony bazowej, zastąpić metodę obciążenia jak poniżej:
public class PageBase : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.Session["LastViewedPage"] = Request.RawUrl;
}
}
iw każdej strony, gdybym był zainteresowany, aby wiedzieć, czy to jest odświeżania:
if (this.Session["LastViewedPage"].ToString() == Request.RawUrl)
{
// This is a refresh!
}
mówisz "Mogę używać zmiennych sesji", dlaczego więc nie zapisać ostatniej odwiedzonej strony? – tomfumb
Beacuse Muszę go przechowywać na każdej stronie. Właściwie to może nie jest zły pomysł na używanie strony bazowej ... – Kamyar