2017-12-12 10 views
0

クエリ文字列(a、b、c、d)を削除し、クエリ文字列(z)を追加します。c#request.querystring効率的な方法で少数のキー値のペアを追加して削除しますか?

入力:/example.com/?a=1&b=2&c=3&d=4&e=5&f=6
出力:たとえば/example.com/?&e=5&f=6&z=6

Dictionary<string, string> dict = new Dictionary<string, string>(); 
    foreach (var key in Request.QueryString.AllKeys) 
    { 
     if (key != "a" && key != "b" && key != "c" && key != "d") 
     { 
      dict.Add(key, Request.QueryString[key]); 
     } 
    } 
queryString = string.Join("&", dict.Select(x => x.Key + "=" + x.Value)); 

if (!string.IsNullOrEmpty(queryString)) 
{ 
    searchViewModel.CurrQS += "&z=6"; 
} 

私はこれまでのところ、これを行っています。しかし、これを辞書に変換し、次にこれを文字列に変換することは価値があります。その他の方法は?このうち

+0

好き?または単純なC#コード –

+0

Regex.Replaceを試してみませんか? –

+0

@PranayRana:asp.net – maverick

答えて

0
Dictionary<string, string> dict = new Dictionary<string, string>(); 
    foreach (var key in Request.QueryString.AllKeys) 
    { 
     if (key != "a" && key != "b" && key != "c" && key != "d") 
     { 
      dict.Add(key, Request.QueryString[key]); 
     } 
    } 

queryString = Request.RawUrl.Split(new[] {'?'})[0] + 
       string.Join("&", dict.Select(x => x.Key + "=" + x.Value)); 

if (!string.IsNullOrEmpty(queryString)) 
{ 
    queryString += "&z=6"; 
} 

簡単な方法は、URLを持っているならば、これを行う、次のとおりです。

var stringURL = Request.RawUrl.Split(new[] {'?'}); 
var urlwithoutQuerystring=stringURL.First(); 
var newUrl = urlwithoutQuerystring + "?c=abc" 

するか、それがasp.netでこの

var stringURL = Request.RawUrl.Split(new[] {'?'})[0]; 
var newUrl = strinULR + "?c=abc" 
+0

クエリ文字列キーa、b、c、dをどのように削除しますか? – maverick

+0

@maverick - これを行うとvar stringURL = Request.RawUrl.Split(new [] {'?'}))[0];クエリーストリングなしで行URLを提供します...クエリ文字列が削除されます。それを心配する必要はありません。データを保存して保存したい場合は、それを保存して置き換えてください。 –

+0

@maverick - 更新済み –

関連する問題