12

.Net のSystem.Web.HttpUtilityクラスは、次の関数を定義して、クエリ文字列を に解析しますNameValueCollection

public static NameValueCollection ParseQueryString(string query);

逆を行う関数はありますか (つまり、NameValueCollectiona をクエリ文字列に変換する)。

4

5 に答える 5

25

System.Collections.Specialized.NameValueCollectionはこれをサポートしていませんが、派生内部クラスは(オーバーライドによりSystem.Web.HttpValueCollection )ToString()サポートしています。

残念ながら(内部であるため)、このクラスを直接インスタンス化することはできませんが、によって返されHttpUtility.ParseQueryString()ます(これを で呼び出すことはできますがString.Empty、 ではできませんNull)。

を取得したら、最終的に を呼び出す前に、 を呼び出しHttpValueCollectionてオリジナルから埋めることができます。NameValueCollectionAdd()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"

于 2011-12-22T10:57:31.213 に答える
4

NameValueCollection には、すべての要素をクエリ文字列として自動的に書き出す自動 ToString() メソッドがあります。

自分で書く必要はありません。

var querystringCollection = HttpUtility.ParseQueryString("test=value1&test=value2");

var output = querystringCollection.ToString(); 

output = "テスト=値1&テスト=値2"

于 2011-03-25T04:17:00.383 に答える
2

組み込みのものはないと思いますが、http://blog.leekelleher.com/2008/06/06/how-to-convert-namevaluecollection-to-a-queryを実装する方法の例を次に示します-ストリング/

于 2010-04-09T05:59:04.310 に答える
-1

私がいつも使用している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;
    }
于 2012-08-25T05:08:12.920 に答える