Как я удаляю объекты из строки запроса для перенаправления?

В одной точке никто не имеет mention, чтобы убедиться, что режим запуска Host Activity не установлен на singleInstance или singleTask.

onActivityResult не будет работать, если ваш режим запуска установлен на SingleInstance или SingleTask. или вы вызываете свою активность с использованием этих режимов IntentFilters

standard или singleTop, которые будут работать нормально.

8
задан MvanGeest 18 June 2010 в 16:40
поделиться

6 ответов

Необходимо было бы восстановить URL и затем перенаправить. Что-то вроде этого:

string url = Request.RawUrl;

NameValueCollection params = Request.QueryString;
for (int i=0; i<params.Count; i++)
{
    if (params[i].GetKey(i).ToLower() == "foo")
    {
        url += string.Concat((i==0 ? "?" : "&"), params[i].GetKey(i), "=", params.Get(i));
    }
}
Response.Redirect(url);

Так или иначе я не протестировал это или что-либо, но это должно работать (или по крайней мере получить Вас в thye правильном направлении),

8
ответ дан 5 December 2019 в 07:13
поделиться
Response.Redirect(String.Format("nextpage.aspx?{0}", Request.QueryString.ToString().Replace("foo", "mangledfoo")));

Я быстрый взлом, сохраняет Вас мало. Но нечто не будет присутствовать для кода, ждущего его в nextpge.aspx :)

2
ответ дан 5 December 2019 в 07:13
поделиться

Интересный вопрос. Я не вижу реальной жизнеспособной альтернативы ручному копированию набора, так как CopyTo только позволит Вам получать значения (а не ключи).

Я думаю, что Взлом HollyStyles работал бы (хотя я буду озабочен помещением Замены в QueryString - лицевая сторона. иждивенец на варианте использования), но существует одна вещь, это беспокоит меня..

Если целевая страница не читает его, почему необходимо удалить его из QueryString?

Это будет просто проигнорировано?

Приводя это к сбою, я думаю, что необходимо было бы просто стиснуть зубы и создать util метод для изменения набора для Вас.

ОБНОВЛЕНИЕ - после ответа от OP

Ahhhh! Я вижу теперь, да, у меня были подобные проблемы с SiteMap, выполняющим полное сравнение строки.

Начиная с изменения другого исходного кода (т.е. поиск) вне рассмотрения, я, вероятно, сказал бы, что может быть лучше сделать Замену на строке. Хотя быть справедливым, если бы Вы часто встречаетесь с кодом, подобным этому, это одинаково было бы столь же быстро для установки служебной функции для клонирования набора, беря массив значений для фильтрации от него.

Таким образом, Вы никогда не должны были бы волноваться о таких проблемах снова :)

2
ответ дан 5 December 2019 в 07:13
поделиться

Страница результатов поиска добавляет "&terms =" к строке запроса для выделения, таким образом, это портит его.

Только другая опция является заменой regex. Если Вы знаете наверняка, что &terms посреди набора, где-нибудь оставляют запаздывание и в regex, если Вы знаете наверняка, что это находится на конце, затем отбрасывают запаздывание и и изменяют замещающую строку "и" Представлять в виде строки. Пустой

Response.Redirect(String.Format("nextpage.aspx?{0}", Regex.Replace(Request.QueryString.ToString(), "&terms=.*&", "&"));
0
ответ дан 5 December 2019 в 07:13
поделиться

Можно ли клонировать набор и затем перенаправить ли к странице с клонированным (и измененный) набор?

Я знаю, что это не намного лучше, чем итерация...

-1
ответ дан 5 December 2019 в 07:13
поделиться

Вы можете избежать прикосновения к исходной строке запроса, работая с ее копией. Затем вы можете перенаправить страницу на URL-адрес, содержащий измененную строку запроса, например:

    var nvc = new NameValueCollection();

    nvc.Add(HttpUtility.ParseQueryString(Request.Url.Query));

    nvc.Remove("foo");

    string url = Request.Url.AbsolutePath;

    for (int i = 0; i < nvc.Count; i++)
        url += string.Format("{0}{1}={2}", (i == 0 ? "?" : "&"), nvc.Keys[i], nvc[i]);

    Response.Redirect(url);

Обновление:

Оказывается, мы можем упростить код следующим образом:

    var nvc = HttpUtility.ParseQueryString(Request.Url.Query);

    nvc.Remove("foo");

    string url = Request.Url.AbsolutePath + "?" + nvc.ToString();

    Response.Redirect(url);
10
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: