Jak odświeżyć stronę w ASP.NET? (Pozwól mu przeładować się przez kod)
Wolałbym nie używać Response.Redirect (), ponieważ nie wiem, czy strona, na której się znajdę, znajduje się w kontrolce użytkownika wewnątrz webpartu w sharepoint.
Jak odświeżyć stronę w ASP.NET? (Pozwól mu przeładować się przez kod)
Wolałbym nie używać Response.Redirect (), ponieważ nie wiem, czy strona, na której się znajdę, znajduje się w kontrolce użytkownika wewnątrz webpartu w sharepoint.
Odpowiedzi:
Po wyrenderowaniu strony do klienta masz tylko dwa sposoby wymuszenia odświeżenia. Jednym z nich jest Javascript
setTimeout("location.reload(true);", timeout);
Drugi to metatag:
<meta http-equiv="refresh" content="600">
Możesz ustawić interwały odświeżania po stronie serwera.
Server.TransferRequest.
W moich kontrolkach użytkowników po aktualizacji danych robię:
Response.Redirect(Request.RawUrl);
Zapewnia to ponowne załadowanie strony i działa dobrze z poziomu kontroli użytkownika. Używasz RawURL i nie Request.Url.AbsoluteUrizachowujesz żadnych parametrów GET, które mogą być zawarte w żądaniu.
Prawdopodobnie nie chcesz używać __doPostBack:, ponieważ wiele stron aspx zachowuje się inaczej podczas ogłaszania zwrotnego.
To może być późno, ale mam nadzieję, że pomoże to komuś, kto szuka odpowiedzi.
W tym celu możesz skorzystać z następującego wiersza:
Server.TransferRequest(Request.Url.AbsolutePath, false);
Staraj się unikać używania, Response.Redirectponieważ zwiększa to liczbę etapów procesu. W rzeczywistości to:
Jak widać, ten sam wynik dotyczy 2 podróży, a nie 1 podróży.
.Textw a TextBoxlub .Visiblestatus Button.
Spróbuj tego:
Response.Redirect(Request.Url.AbsoluteUri);
Użyj metody location.reload () z javascript .
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
Istnieją różne metody odświeżania strony w asp.net, takie jak ...
Skrypt Java
function reloadPage()
{
window.location.reload()
}
Kod za
Response.Redirect(Request.RawUrl)
Meta Tag
<meta http-equiv="refresh" content="600"></meta>
Przekierowanie strony
Response.Redirect("~/default.aspx"); // Or whatever your page url
Jeśli nie chcesz wykonywać pełnego odświeżania strony, to co powiesz na zawijanie tego, co chcesz odświeżyć w UpdatePanel, a następnie wykonanie asynchronicznego ogłaszania zwrotnego?
Osobiście muszę upewnić się, że strona zachowuje stan, aby wszystkie pola tekstowe i inne pola wejściowe zachowały swoje wartości. wykonując odświeżanie meta, jest jak nowy wpis, IsPostBack jest zawsze fałszywy, więc wszystkie kontrolki są ponownie w stanie zainicjowanym. Aby zachować stan, umieść to na końcu swojej Page_Load (). utwórz ukryty przycisk na stronie z podłączonym zdarzeniem, coś w rodzaju butRefresh ze zdarzeniem butRefresh_Click (...). Ten kod ustawia licznik czasu na stronie, aby uruchomić ogłaszanie zwrotne, tak jak użytkownik sam kliknął przycisk odświeżania. cały stan i sesja są zachowane. Cieszyć się! (PS, może być konieczne umieszczenie dyrektywy w nagłówku @Page EnableEventValidation = "false", jeśli pojawi się błąd podczas ogłaszania zwrotnego.
//tell the browser to post back again in 5 seconds while keeping state of all controls
ClientScript.RegisterClientScriptBlock(this.GetType(), "refresh", "<script>setTimeout(function(){ " + ClientScript.GetPostBackClientHyperlink(butRefresh, "refresh") + " },5000);</script>");
Nie możesz tego zrobić. Jeśli używasz przekierowania (lub jakiejkolwiek innej techniki serwera), nigdy nie wyślesz rzeczywistej strony do przeglądarki, a jedynie strony przekierowujące.
Aby to zrobić, musisz użyć metatagu lub JavaScript, aby móc ponownie załadować stronę po jej wyświetleniu przez jakiś czas:
ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
Możesz skorzystać z 2 sposobów rozwiązania tego problemu: 1) Po tagu head
<head>
<meta http-equiv="refresh" content="600">
</head>
2) Jeśli Twoja strona nie ma tagu head, do zaimplementowania musisz użyć Javascript
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
Mój kontakt:
Jedynym poprawnym sposobem odświeżenia strony było użycie JavaScript, wiele z najlepszych odpowiedzi .NET zawiodło.
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
Umieść powyższy kod w zdarzeniu kliknięcia przycisku lub w dowolnym miejscu, w którym chcesz wymusić odświeżenie strony.