добавление ключей и значений в строку запроса

Я пытаюсь сделать:

foreach (JProperty o in obj.Properties())
{
   string ke = o.Name.ToString();
   string va = o.Value.ToString();
   HttpContext.Current.Request.QueryString.Add(ke,va);
}

но выдает ошибку "collection is read-only"

КАК я могу добавить значения в строку запроса?

Спасибо


person lol    schedule 03.03.2016    source источник
comment
Он отображается только для чтения, что означает, что вы не можете добавлять. Вы должны создать новый и назначить запрос с самого начала.   -  person Ian    schedule 03.03.2016


Ответы (1)


Request.QueryString — это URL-адрес, который вы получаете от сервера. Вы не можете изменить это. Что вы можете сделать, так это выполнить перенаправление ответа со строкой запроса следующим образом:

string qs = "?";
foreach (JProperty o in obj.Properties())
{
   qs += o.Name.ToString();
   qs += "=" + o.Value.ToString() + "&";
}
Response.Redirect("url/index" + qs);
person misha130    schedule 03.03.2016
comment
так ведь с перенаправлением он будет вспоминать обработчик? - person lol; 03.03.2016
comment
Не вспомнить, а позвонить. Он создаст/добавит строку запроса и вызовет новый обработчик. - person misha130; 03.03.2016
comment
в моем решении я не могу позвонить снова. так что в этом случае нет возможности добавить значения в QueryString, я прав? - person lol; 03.03.2016
comment
Да, не могу изменить это, если вы не позвоните снова. Если вы ДЕЙСТВИТЕЛЬНО ДЕЙСТВИТЕЛЬНО настаиваете на изменении строки запроса, что является ПЛОХОЙ ПРАКТИКОЙ, проверьте stackoverflow .com/questions/15450505/, что дает вам возможность изменить его ДО того, как вы его получите - person misha130; 03.03.2016