.Net のSystem.Web.HttpUtility
クラスは、次の関数を定義して、クエリ文字列を に解析しますNameValueCollection
。
public static NameValueCollection ParseQueryString(string query);
逆を行う関数はありますか (つまり、NameValueCollection
a をクエリ文字列に変換する)。
.Net のSystem.Web.HttpUtility
クラスは、次の関数を定義して、クエリ文字列を に解析しますNameValueCollection
。
public static NameValueCollection ParseQueryString(string query);
逆を行う関数はありますか (つまり、NameValueCollection
a をクエリ文字列に変換する)。
System.Collections.Specialized.NameValueCollection
はこれをサポートしていませんが、派生内部クラスは(オーバーライドによりSystem.Web.HttpValueCollection
)ToString()
サポートしています。
残念ながら(内部であるため)、このクラスを直接インスタンス化することはできませんが、によって返されHttpUtility.ParseQueryString()
ます(これを で呼び出すことはできますがString.Empty
、 ではできませんNull
)。
を取得したら、最終的に を呼び出す前に、 を呼び出しHttpValueCollection
てオリジナルから埋めることができます。NameValueCollection
Add()
ToString()
var nameValueCollection = new NameValueCollection {{"a","b"},{"c","d"}};
var httpValueCollection = System.Web.HttpUtility.ParseQueryString(String.Empty);
httpValueCollection.Add(nameValueCollection);
var qs = httpValueCollection.ToString();
nameValueCollection.ToString() = "System.Collections.Specialized.NameValueCollection" httpValueCollection.ToString() = "a=b&c=d"
NameValueCollection には、すべての要素をクエリ文字列として自動的に書き出す自動 ToString() メソッドがあります。
自分で書く必要はありません。
var querystringCollection = HttpUtility.ParseQueryString("test=value1&test=value2");
var output = querystringCollection.ToString();
output = "テスト=値1&テスト=値2"
組み込みのものはないと思いますが、http://blog.leekelleher.com/2008/06/06/how-to-convert-namevaluecollection-to-a-queryを実装する方法の例を次に示します-ストリング/
私がいつも使用している2つの非常に便利な機能があります:
private string GetQueryStringParameterValue(Uri url, string key)
{
return HttpUtility.ParseQueryString(url.Query.TrimStart('?'))[key];
}
private Uri SetQueryStringParameterValue(Uri url, string key, string value)
{
var parameters = HttpUtility.ParseQueryString(url.Query.TrimStart('?'));
parameters[key] = value;
var uriBuilder = new UriBuilder(url) { Query = parameters.ToString() };
return uriBuilder.Uri;
}