Классическая форма ASP не публикуется при обновлении страницы - PullRequest
0 голосов
/ 03 августа 2010

У меня есть страница ASP, которая принимает два аргумента в строке запроса. На странице есть форма, которая отправляет обратно к себе.

Если я сделаю публикацию формы один раз, а затем попытаюсь обновить страницу, она не будет перепечатывать форму. Он загружает страницу, как будто она загружается впервые, пропуская значения строки запроса.

Есть ли способ ВСЕГДА форсировать репост, когда я обновляю страницу, являющуюся результатом сообщения ФОРМЫ?

Ответы [ 4 ]

1 голос
/ 11 декабря 2010

В этой ситуации вы все еще можете сохранить отправленные значения.

То, что вам нужно будет сделать, - записать самый последний запрос в хранилище файлов cookie, сеансов или хранилище данных / файлов, и при каждом запросе проверять, был ли обработан запрос, прежде чем удалять данные.

Поскольку то, что вы искали, было строкой запроса, это может быть что-то вроде этого:

 Response.Cookies("tempdata")("querystring") = Request.ServerVariables("QUERY_STRING")
 Response.Cookies("tempdata")("querystring_handled") = false

, тогда, когда вы закончите с этим запросом, вы можете очистить значение cookie или установить querystring_handled = true,

Возможно, есть ситуации, когда это может вызвать некоторые конфликты, но, как вы знаете, у вас все еще будет возможность вспомнить запрос, как только он будет получен сервером.

1 голос
/ 03 августа 2010

Похоже, проблема в том, что вы теряете некоторые важные параметры на своей странице при публикации. В ASP есть два основных метода передачи параметров, в строке URL через GET или из формы POST. Первый передает вам значения в словаре QueryString, а второй передает их вам в словарь формы. К счастью для вас, можно принять параметр, который существует в словаре EITHER, посмотрев объект запроса:

Request["a"] найдет a независимо от того, находится ли он в Request.QueryString["a"] или Request.Form["a"].

Это поможет вам в вашей текущей дилемме, потому что вы можете просто записать параметры строки запроса в форму при начальной загрузке страницы в виде полей <input type="hidden". В последующих публикациях ваш Request["a"] поиск по вашим параметрам найдет их независимо от того, будут ли они переданы в URL (при начальной загрузке) или по почте при последующих вызовах.

1 голос
/ 06 августа 2010

Проблема была в том, что я заходил в адресную строку Firefox и нажимал Enter.Это привело к перезагрузке URL-адреса (и, конечно, у него не было строки запроса после повторного размещения).Итак, урок состоит в том, чтобы проверить входящие переменные и формы, чтобы увидеть, обновлялась ли страница вручную, я полагаю ...

0 голосов
/ 03 августа 2010

Какое действие использует форма: GET или POST?Обычно форма использует действие POST, но в этом случае, если вы обновите страницу опубликованной формой, вы не получите ничего в строке запроса, потому что строка запроса передается только через действие GET.Предполагая, что эта проблема не вызвана кешированием страниц, мне кажется, что он работает так, как задумано (если форма отправляет данные).Просто убедитесь, что вы обрабатываете переменные формы, если строка запроса отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...