Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать, чтобы страничка обновлялась правильно 
V
    Опции темы
vlsaf
Дата 28.2.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Юзер отправляет заяву при этом автоматом перемещается на новую страницу.
На этой новой страницы ему пишется.

Ваша заява принята под номером таким-то.

Если теперь юзер нажимает в IE обновить страничку, то 
IE дает предупреждение, что данные  еще раз будут отправлены
при этом номер заявы увеличивается на 1.
Т.о. одинаковых заяв можно наплодить туеву хучу.

Как это можно загасить.
Я тут видел, что надо страницу как-то на себя замкнуть, но не понимаю, как это делается.

Подскажите плизз.
PM   Вверх
Mymik
Дата 28.2.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Замыкание страницы самой на себя делается через.
Код

Response.Redirect()

Есть еще метод цифровой подписи Request'а. Он описан в книге Экспозито. 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
vlsaf
Дата 28.2.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Вот в том то и вопрос. А где Response.Redirect() вставить?
Если в Page_Load() , то пойдет бесконечный цикл.

Мне думается, что для меня этот вариант не подходит.
..................................................................................................

Нашел вот это
Код

Response.CacheControl = "no-cache"; 
Response.AddHeader("Pragma", "no-cache"); 
Response.Expires = -1; 
Response.AddHeader("Cache-Control", "no-cache");


На сколько целесообразно такой код использовать и есть ли подводные камни?

Это сообщение отредактировал(а) vlsaf - 28.2.2008, 22:46
PM   Вверх
vlsaf
Дата 29.2.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Цитата(Mymik @ 28.2.2008,  19:28)
Есть еще метод цифровой подписи Request'а. Он описан в книге Экспозито.

У Экспозито 2 книги:
1. Базовый курс
2. Углубленное изучение. 



В какой именно смотреть?
PM   Вверх
Mymik
Дата 29.2.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Цитата(vlsaf @  28.2.2008,  22:23 Найти цитируемый пост)
Нашел вот это
Код

Response.CacheControl = "no-cache"; 
Response.AddHeader("Pragma", "no-cache"); 
Response.Expires = -1; 
Response.AddHeader("Cache-Control", "no-cache");

Нет, тебе это не поможет. Когда ты нажимаешь F5 или Ctrl+R браузер выполняет последнею операцию. Т.е. когда ты делаешь Response.Redirect то при вышеуказанных командах браузер выполняет код 201 и переадресует пользователя опять.


Цитата(vlsaf @  28.2.2008,  22:23 Найти цитируемый пост)
Вот в том то и вопрос. А где Response.Redirect() вставить?
Если в Page_Load() , то пойдет бесконечный цикл.
Обычно это ставится после того как данных были вставлены или удалены. Т.е. в обработчике события вставки, после непосредственнй вставки, ты делаешь Response.Redirect на страницу и туда просто можешь добавить get параметр типа id а когда ты поподаешь на страницу
Цитата(vlsaf @  28.2.2008,  17:55 Найти цитируемый пост)
Ваша заява принята под номером таким-то.
То ты просто считываешь этот ID из Request и вводишь туда куда тебе необходимо было.

Добавлено через 3 минуты и 17 секунд
Да, забыл случайно
Цитата(vlsaf @  29.2.2008,  00:03 Найти цитируемый пост)
У Экспозито 2 книги:
1. Базовый курс
2. Углубленное изучение. 
В какой именно смотреть? 
На сколько я помню это было в углубленном курсе. Но ИМХО, это очень геморойных способ...



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
vlsaf
Дата 29.2.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



На странице 1 (где вставляется запись)

1. Добавление записи
2. Тут же получение ID добавленой записи
3. переход на страницу 2 с передачей ID 
Код

Context.Items.Add("id", ID.ToString());
Server.Transfer("~/Ok.aspx");

При обновлении страницы Ok.aspx происходит повторная отправка данных.

Ты предлагаешь пользоваться обычным
Код

Response.Redirect("~/Ok.aspx");

Подскажи, как в этом случае передать get параметр ID ?
Еще не передавал. Какой должен быть синтаксис?

И как этот параметр считать на странице Ok.aspx?
PM   Вверх
Mymik
Дата 29.2.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Передать параметр get так вот -->>
Код

Response.Redirect(String.Format("~/ok.aspx?id={0}&temp=temp&bla=777", ID));

Т.е. первый параметр идет через "?" а все остальные через "&" (это если понадобится передавать несколько параметров).

Чтобы забрать данные на следующей странице можно использовать два способа -->>
Код

Request.QueryString["id"]; /* первый */
Request["id"]; /* второй */
Первый от второго отличается лишь тем, что в первом ты будешь получать параметры только из GET коллекции, а во втором ты получаешь и из GET и из POST. первый и второй способ возвращает строку. На сколько я помню, ключи в данном случаи регистронезависимые, потому как разные браузеры могут по разному писать url (некоторые сохраняют регистр, некоторые не сохраняют).
Если ты будешь использовать пришедшие параметр в програмных целях (допустим забор данных из БД или еще чего), то помни, что все что пришло от пользователя является злом smile

Добавлено через 4 минуты и 49 секунд
да, если вдруг будет несколько одинаковых параметров, к примерну "ok.aspx?id=7&id=8&id=9" то при получении этих параметров на сервере, ты получишь строку "7,8,9" т.е. параметры разделяются запятыми.
Все, пожалуй все что пришло в голову мне smile


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Sirius_UZ
Дата 3.3.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 13.6.2007

Репутация: нет
Всего: нет



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.