Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Возврат к предыдущей странице


Автор: Bogdan1024 2.7.2008, 22:13
Вернуться к предыдущей странице можно используя код джаваскрипта
Код

window.navigator.back();

Но у страницы есть чудесное свойство PreviousPage, используя которое как мне кажется тоже можно вернуться на предыдущую страницу. Но как? Я не нахожу у System.Web.UI.Page свойства URL!

Автор: Bogdan1024 2.7.2008, 22:34
Оказывается, PreviousPage будет заполнено если, например, у кнопки указать PostBackUrl другую страницу. И не будет указано PreviousPage если мы просто перескачили с одной страницы на другую. 
Но всё же. Какими естественными (!, как сделать это извращёнными я догадываюсь) способами можно вернуться на предыдущую страницу?

Автор: Idsa 3.7.2008, 08:35
Сервер ничего не знает об истории браузера. Так что за исключением вышеописанного случая с cross-page posting придется использовать JavaScript.

Автор: 1stain 3.7.2008, 10:13
Код

Response.Redirect( this.Request.UrlReferrer.ToString() );

Автор: Idsa 3.7.2008, 10:32
1stain, не думаю, что Bogdan1024 хочется, чтобы его реализация работала "почти всегда".

Автор: Bogdan1024 5.7.2008, 21:21
Цитата
Response.Redirect( this.Request.UrlReferrer.ToString() );

Ох! Так это ж то шо надо! Спасибо smile
А как ASP.NET узнаёт где я раньше был? Там в сессии хранится информация? Или браузер в заголовке что-то отправляет?
Цитата
1stain, не думаю, что Bogdan1024 хочется, чтобы его реализация работала "почти всегда".

А почему это будет работать не всегда? Как я уже выяснил опытным путём, UrlReferrer не будет содержать ссылку на другой сайт если я пришёл с него. Впринципе, мне так и надо (но тут телепатов нету smile ).

Автор: Idsa 5.7.2008, 21:47
Цитата(Bogdan1024 @  6.7.2008,  01:21 Найти цитируемый пост)
А как ASP.NET узнаёт где я раньше был? Там в сессии хранится информация? Или браузер в заголовке что-то отправляет?

Браузер через соответствующий Http-заголовок.

Цитата(Bogdan1024 @  6.7.2008,  01:21 Найти цитируемый пост)
А почему это будет работать не всегда?

Браузеры позволяют отключать отсылку HttpReferer.
Кроме того, можно отключать HttpReferer на прокси. Тогда у всех пользователей, использующих прокси, HttpReferer будет пустым.
Думаю, этого достаточно для того, чтобы не использовать HttpReferer для навигации в серьезных проектах.

Цитата(Bogdan1024 @  6.7.2008,  01:21 Найти цитируемый пост)
Как я уже выяснил опытным путём, UrlReferrer не будет содержать ссылку на другой сайт если я пришёл с него. 

Не верю. Если пользователь попадает на страницу сайта, например, с гугла, то HttpReferer будет равен адресу страницы поиска гугла.
Если же переходить через командную строку, то, конечно, HttpReferer будет пустым (даже если на этой вкладке в браузере открыта другая страница).
P. S. Используя HttpReferer, определяют, откуда был совершен переход на страницу сайта. Так, например, счетчики предоставляют информацию о том, какой процент посещений происходит с того или иного поисковика. Еще подобным образом можно отслеживать, насколько эффективно работают ссылки, расположенные на других сайтах (как правило, за деньги). И т. д. и т. п. Это я к тому, что если бы
дела обстояли так:
Цитата(Bogdan1024 @  6.7.2008,  01:21 Найти цитируемый пост)
UrlReferrer не будет содержать ссылку на другой сайт если я пришёл с него

, то ни один из вышеописанных подходов не работал бы.

Автор: Bogdan1024 5.7.2008, 23:13
Ясно! Всем спасибо за ответы! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)