Как передать несколько параметров в строке запроса - PullRequest
75 голосов
/ 07 апреля 2009

У меня есть три значения, которые я должен передать в качестве параметров, например, strID, strName и strDate.

Я хочу перенаправить эти три параметра на другую страницу в Response.Redirect(). Кто-нибудь может предоставить мне правильную строку запроса?

Ответы [ 6 ]

89 голосов
/ 07 апреля 2009

query_string

(Ниже приводится текст связанного раздела записи в Википедии.)

Структура

Типичный URL, содержащий строку запроса, выглядит следующим образом:

http://server/path/program?query_string

Когда сервер получает запрос на такую ​​страницу, он запускает программу (если она настроена на это), передавая строку запроса без изменений программе. Знак вопроса используется в качестве разделителя и не является частью строки запроса.

Ссылка на веб-странице может иметь URL-адрес, содержащий строку запроса, однако HTML определяет три способа, которыми веб-браузер может сгенерировать строку запроса:

  • веб-форма через ... элемент
  • серверная карта изображений с помощью атрибута ismap элемента с конструкцией
  • индексированный поиск по устаревшему элементу

Веб-формы

Основное использование строк запроса заключается в содержании HTML-формы, также известной как веб-форма. В частности, когда отправляется форма, содержащая поля field1, field2, field3, содержимое полей кодируется в виде строки запроса следующим образом:

field1=value1&field2=value2&field3=value3...

  • Строка запроса состоит из серии пар поле-значение.
  • В каждой паре имя и значение поля разделяются знаком равенства. Знак равенства может быть опущен, если значение является пустой строкой.
  • Серия пар разделяется амперсандом '&' (или точкой с запятой ';' для URL-адресов, встроенных в HTML и не генерируемых ...; см. Ниже). Хотя нет определенного стандарта, большинство веб-платформ позволяют связывать несколько значений с одним полем:

field1=value1&field1=value2&field1=value3...

Для каждого поля формы строка запроса содержит пару поле = значение. Веб-формы могут включать поля, которые не видны пользователю; эти поля включаются в строку запроса при отправке формы

Это соглашение является рекомендацией W3C. W3C рекомендует, чтобы все веб-серверы поддерживали разделители точек с запятой в дополнение к разделителям амперсандов [6], чтобы разрешить строки запросов application / x-www-form-urlencoded в URL-адресах в документах HTML без необходимости экранировать сущности амперсандами.

Технически, содержимое формы кодируется только как строка запроса, если метод отправки формы - GET. Та же самая кодировка используется по умолчанию, когда используется метод отправки POST, но результат не отправляется в виде строки запроса, то есть не добавляется в URL-адрес действия формы. Скорее, строка отправляется как тело HTTP-запроса.

31 голосов
/ 07 апреля 2009
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

перед перенаправлением:

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);
14 голосов
/ 10 апреля 2013

Попробуйте вот так. Должно работать

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
7 голосов
/ 07 апреля 2009
~mypage.aspx?strID=x&strName=y&strDate=z
5 голосов
/ 31 мая 2016

Это можно сделать с помощью:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
1 голос
/ 13 июня 2014

Я использую AbsoluteUri, и вы можете получить его так:

string myURI = Request.Url.AbsoluteUri;
 if (!WebSecurity.IsAuthenticated) {
        Response.Redirect("~/Login?returnUrl="
            + Request.Url.AbsoluteUri );

Тогда после входа в систему:

var returnUrl = Request.QueryString["returnUrl"];
 if(WebSecurity.Login(username,password,true)){
                Context.RedirectLocal(returnUrl);

У меня это хорошо работает.

...