F5 в браузере

maliy
Дата: 03.06.2008 18:44:07
Подскажите кто знает, как отличить постбэк асинхронный запрос и нажатие пользователем Ф5 в браузере , если выполняю асинхронный запрос(то есть нажимаю кнопку на апдейт панеле) и потом жму Ф5 то не могу отличить это первая загрузка страницы или нажата Ф5. Заранее Спасибо
Nisus
Дата: 03.06.2008 18:56:18
F5 тупо отправляет данные из кеша браузера, на этом и можно попробовать сыграть, например так http://www.codeproject.com/KB/aspnet/Detecting_Refresh.aspx
maliy
Дата: 03.06.2008 22:47:55
он отправляет не из кэша , а просто выполняет последний запрос ....этот вариант тот, что предложил Nisus, он подходит при постбеке .... но с аяксом он не работает.....а мне необходимо именно с аяксом .....
maliy
Дата: 04.06.2008 12:10:59
народ что никто не знает иил не сталкивались с такой проблемой , я думаю эта проблема актуальная ведь .....
lews
Дата: 04.06.2008 13:33:39
А зачем нужно это знать?
GreenAsh
Дата: 04.06.2008 14:00:00
Подскажите кто знает, как отличить постбэк асинхронный запрос и нажатие пользователем Ф5 в браузере , если выполняю асинхронный запрос(то есть нажимаю кнопку на апдейт панеле) и потом жму Ф5 то не могу отличить это первая загрузка страницы или нажата Ф5. Заранее Спасибо


Подробнее опиши проблему, т.к.: если нажимаешь кнопку на UpdatePanel, выполняется AJAX Post для страницы, и при этом данные запроса не попадают в броузер(они тупо на клиенте выполняются), а на страницу приходит PostBack который ты можешь определить. А по F5 он выполняет последний запрос на сервер, если у тебя есть Post-ы не с клиента, а обычным(полный рефреш страницы) способом, то тогда броузер запомнит последний пост. И по Ф5 выполнит его.

Возможно вот это решение:
Когда происходит передача данных с помощью компонент MS AJAX, в заголовок поста, - Request.Headers.Keys, попадает значение: "x-microsoftajax" (у меня оно лежит в Request.Headers.Keys[10])
maliy
Дата: 04.06.2008 14:39:51
lews
А зачем нужно это знать?

Потому как это проблема , смотря как логика у тя завязана, допустим если у тя пользователь добавил данные , а потом нажал Ф5 то данные дублируются , или может не нужный код тебе выполнятся , есть описание идей как от этого избавиться , но при PostBacke. Я решил эту проблему при постбеке , а вот если с аяксом логика завязана , то здесь не выходит ....
maliy
Дата: 04.06.2008 14:51:25
GreenAsh , да я проверяю Page.Request.Headers["x-microsoftAjax"] , когда происходит асинхронный запрос (нажимаю кнопку на апдейпанеле) то появляется параметр "Delta=true" И поэтому признаку я отличаю постбек был или асинхронный запрос. Просто если я потом нажму F5 то аякс все затираеТ , то есть Page.IsPostBack=false(хотя оно false только при первой загрузке страницы) и Page.Request.Headers["x-microsoftAjax"] ==null и поэтому я не могу отличить произошел асинхронный запрос или это первая загрузка страницы . У меня просто логика завязана так , что только при первой загрузке я выполняю определенный код (очищаю классы , в которых храню данные, ) , а тут все рушится , нажал Ф5 , получается ситуация что у меня первая загрузка страницы и все работает не так как надо...Вообщем вот проблема ....
GreenAsh
Дата: 04.06.2008 17:49:00
GreenAsh , да я проверяю Page.Request.Headers["x-microsoftAjax"] , когда происходит асинхронный запрос (нажимаю кнопку на апдейпанеле) то появляется параметр "Delta=true" И поэтому признаку я отличаю постбек был или асинхронный запрос. Просто если я потом нажму F5 то аякс все затираеТ , то есть Page.IsPostBack=false(хотя оно false только при первой загрузке страницы) и Page.Request.Headers["x-microsoftAjax"] ==null и поэтому я не могу отличить произошел асинхронный запрос или это первая загрузка страницы . У меня просто логика завязана так , что только при первой загрузке я выполняю определенный код (очищаю классы , в которых храню данные, ) , а тут все рушится , нажал Ф5 , получается ситуация что у меня первая загрузка страницы и все работает не так как надо...Вообщем вот проблема ....

Дак записывай в сессию первая загрузка или нет.
Вроде того:
if (Session["TestPage.aspx"] == null){
//первая загрузка, что то делаем
Session["TestPage.aspx"] = true;
}
а лучше генерить для запроса свой ключ, который будет одинаковым в нужных тебе случаях.
Svetloyar
Дата: 05.06.2008 01:00:31
А я после сохранения данных делаю Response.Redirect("...");