Czy istnieje sposób na wymuszenie odświeżenia kodu?Wymuszenie odżegnania
Czekam na wymuszenie wywołania zwrotnego od metody w kodzie C# za moją aplikacją WWW asp.net.
Czy istnieje sposób na wymuszenie odświeżenia kodu?Wymuszenie odżegnania
Czekam na wymuszenie wywołania zwrotnego od metody w kodzie C# za moją aplikacją WWW asp.net.
odświeżenie strony jest wyzwalany po przedłożeniu formularza, więc jest to związane z działaniem klienta ... spojrzeć tutaj o wyjaśnienie: ASP.NET - Is it possible to trigger a postback from server code?
i tutaj rozwiązania: http://forums.asp.net/t/928411.aspx/1
To działało! Dzięki! –
Dla osób używających nowszych wersji .NET, należy użyć 'Page.ClientScript.GetPostBackEventReference', ponieważ" this.GetPostBackEventReference (...) "jest przestarzałe. Również prawdopodobnie 'Page.ClientScript.RegisterStartupScript (...)'. – AzNjoE
Nie, nie z kodu. Odświeżenie jest żądaniem zainicjowanym ze strony na kliencie zwróconej do siebie na serwerze za pomocą metody POST Http. Po stronie serwera możesz poprosić o przekierowanie, ale będzie to żądanie HETP GET.
Można ręcznie wywołać metodę wywoływana przez odświeżenie strony z imprezy Page_Load
:
public void Page_Load(object sender, EventArgs e)
{
MyPostBackMethod(sender, e);
}
Ale jeśli masz na myśli, czy można mieć Page.IsPostBack
właściwość zestaw do true
bez prawdziwego postu powrotem, to odpowiedź nie jest.
Można użyć kontrolki związanej z danymi, takiej jak Repeater
lub ListView
, w razie potrzeby ponownie powiązać ją z listą właściwości kontrolnych i pozwolić jej dynamicznie generować formanty.
Alternatywnie można użyć Response.Redirect(".")
, aby ponownie załadować tę samą stronę.
Możesz spróbować przekierować na tę samą stronę.
Response.Redirect(Request.RawUrl);
Ale wtedy wartości formularzy są tracone ... –
@ Protectorone nie, chyba że najpierw wyślemy je do bazy danych i wczytaj ponownie w późniejszym odświeżeniu strony w Page_Load() – Fandango68
Prostsze:
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack(sender, e)", true);
Stosując Server.Transfer ("YourCurrentPage.aspx"); możemy z łatwością to osiągnąć i jest to lepsze niż Response.Redirect(); coz Server.Transfer() pozwoli Ci zaoszczędzić czas podróży w obie strony.
Czy to nie resetuje pól formularza? Przypuszczam, że to jest jak świeże wywołanie strony, co oznacza, że dane wejściowe użytkownika, takie jak filtry, zostaną cofnięte (jeśli nie zostaną zapisane w sesji). – Undercover1989
Oto rozwiązanie z http://forums.asp.net/t/928411.aspx/1 wymienione przez mamoo - na wszelki wypadek, gdy strona przejdzie w tryb offline. Sprawdziło się dobrze dla mnie.
StringBuilder sbScript = new StringBuilder();
sbScript.Append("<script language='JavaScript' type='text/javascript'>\n");
sbScript.Append("<!--\n");
sbScript.Append(this.GetPostBackEventReference(this, "PBArg") + ";\n");
sbScript.Append("// -->\n");
sbScript.Append("</script>\n");
this.RegisterStartupScript("AutoPostBackScript", sbScript.ToString());
Czy możesz być bardziej konkretny - i powiedz nam, co do tej pory próbowaliście? –
eh, odświeżenie jest od klienta (przeglądarki) do serwera. Więc kod C# (który działa na serwerze) nie może tego zrobić. –
Myślę, że twoje pytanie jest podobne do tego podniesionego [tutaj] (http://stackoverflow.com/questions/1418532/how-to-force-a-postback-z-asp-net-and-c-sharp) – seanzi