2

.NET フレームワークに、キーと値のペアのシーケンス/列挙可能なもの (または、私がこの形式に固執していないもの) が与えられた場合、次のようなクエリ文字列を作成できるクラスはありますか?

?foo=bar&gar=har&print=1

私はこの些細な仕事を自分で行うことができましたが、車輪の再発明から自分自身を救うように頼むと思いました. 1行のコードでできるのに、なぜこれらすべての文字列体操を行うのでしょうか?

4

4 に答える 4

6

を使用System.Web.HttpUtility.ParseQueryStringして空System.Web.HttpValueCollectionの を作成し、 のように使用できますNameValueCollection

例:

var query = System.Web.HttpUtility.ParseQueryString(string.Empty);
query ["foo"] = "bar";
query ["gar"] = "har";
query ["print"] = "1";
var queryString = query.ToString(); // queryString is 'foo=bar&gar=har&print=1'
于 2013-10-29T09:06:18.470 に答える
1

私の知る限り、.NET フレームワークには何も組み込まれていませんが、ほとんどのものがたくさんあります

System.Web.HttpRequest.QueryStringNameValueCollectionクエリ文字列を出力できるものではなく、事前に解析された です。System.NetHttpWebRequestは、事前に形成された URI を渡すことを期待しSystem.UriBuilderており、Queryプロパティを持っていますが、クエリ文字列全体に対して事前に形成された文字列を期待しています。

ただし、「querystringbuilder」のクイック検索を実行すると、Web でこれを実行できる実装がいくつか表示されます。その 1 つがBrad Vincentによるもので、シンプルで流暢なインターフェースを提供します。

//take an existing string and replace the 'id' value if it exists (which it does)
//output : "?id=5678&user=tony"
strQuery = new QueryString("id=1234&user=tony").Add("id", "5678", true).ToString();
于 2013-10-29T09:03:53.057 に答える