2011-01-30 15 views
5

W ASP.NET często używam Response.Redirect, aby przekierować użytkownika końcowego na inną stronę w moim systemie. Zawsze ustawiam drugi parametr na true, aby natychmiast zakończyć odpowiedź.Co to jest poprawne użycie dla Response.Redirect ("SomeURL", false)?

Dla mojego życia nie mogę wymyślić powodu, dla którego ktokolwiek mógłby ustawić ten parametr jako fałszywy. Jaki jest sens ciągłego generowania strony, gdy przeglądarka użytkownika zostanie natychmiast przekierowana na inną stronę?

Odpowiedz

6

Response.Redirect nie oznacza, że ​​The Page-life-cycle zakończył się na serwerze, tylko wysyła do klienta nagłówek.

Być może najpierw chcesz przekierować użytkownika, a NASTĘPNIE zapisać jego dużą ilość przesłanych danych do bazy danych?

HttpServerUtility.Transfer przy okazji przerywa cykl życia strony, ale nie wysyła nagłówka, po prostu wyświetla inną stronę.

+1

Uwaga: podczas korzystania z funkcji Transfer adres URL pozostanie niezmieniony. –

+0

. Przyjmuję odpowiedź jako poprawną. Jednak przeczytałem twoją odpowiedź jako "Teoretycznie można użyć tego w ten sposób" zamiast "W przeszłości użyłem tego w ten sposób". Co chciałbym wiedzieć, czy używasz kiedyś metody response.redirect z drugim parametrem false? – Aheho

+0

Właściwie zawsze ustawiałem na false. Wolę używać Response.Redirect ("http://www.yahoo.com", false); zamiast Response.Redirect ("http://www.yahoo.com"); –

6
Response.Redirect(..., true); 

klient zostanie wysłany przekierowanie do nowej strony, przetwarzanie zostanie zatrzymane jak Abort wątków występują

Response.Redirect(..., false); 

klient zostanie wysłany przekierowanie do nowej strony, bieżąca strona będzie mógł aby kontynuować przetwarzanie, być może trochę prac porządkowych zrobić lub coś innego

klient nigdy nie zobaczyć wyniki z aktualnej strony zarówno w przypadkach

1

Dlaczego nie. Być może będziesz musiał wykonać pewne czynności na tej stronie, zanim procesy strony zostaną zabite. Zapisywanie do pliku, a następnie na przykład colingowanie. Lub wprowadzanie pewnych zmian w DB, z właściwym zakończeniem połączenia.

-1

Response.Rediect("any page like Default.aspx");

Gdy zasięg kontrola nad tym stwierdzeniem nasza strona będzie przejść do strony, która jest określona w nawiasach. Stroną może być .aspx, .asp.htm itp. ...

+1

Nie ma potrzeby powtarzania rzeczy, które zostały już wyjaśnione w innych odpowiedziach. –

Powiązane problemy