Як передавати декілька параметрів у рядок запитів


89

У мене є три значення, які я повинен передати як параметри для, наприклад strID, strNameта strDate.

Я хочу перенаправити ці три параметри на іншу сторінку в. Response.Redirect()Чи може хтось надати мені правильний рядок запиту?

Відповіді:


112

Рядок_запиту

(Далі наводиться текст розділу посилання на запис у Вікіпедії.)

Структура

Типова URL-адреса, що містить рядок запиту, така:

http://server/path/program?query_string

Коли сервер отримує запит на таку сторінку, він запускає програму (якщо це налаштовано), передаючи програмі рядок 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.


34
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

перед тим, як перенаправити:

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);

15

Спробуйте так. Це повинно спрацювати

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));


5

Це можна зробити за допомогою:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");

1
@DalijaPrasnikar це "посилання" - це URL-адреса, що вказує на localhost, і є частиною відповіді. Будь ласка, не "robo-review".
ElGavilan

1

Я використовую 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);

Для мене це добре працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.