NET的System.Web.HttpUtility
类定义the following function解析查询字符串转换为NameValueCollection
:反向功能
public static NameValueCollection ParseQueryString(string query);
是否有任何功能,做反向(即一个NameValueCollection
转换成一个查询字符串) ?
NET的System.Web.HttpUtility
类定义the following function解析查询字符串转换为NameValueCollection
:反向功能
public static NameValueCollection ParseQueryString(string query);
是否有任何功能,做反向(即一个NameValueCollection
转换成一个查询字符串) ?
一个NameValueCollection中具有自动ToString()方法的例子。
你不需要自己写。
var querystringCollection = HttpUtility.ParseQueryString("test=value1&test=value2");
var output = querystringCollection.ToString();
输出= “测试=值1 &测试=值2”
我不认为这是一个内置的,但这里是如何实现http://blog.leekelleher.com/2008/06/06/how-to-convert-namevaluecollection-to-a-query-string/,将所有的要素自动写出来作为查询字符串
System.Collections.Specialized.NameValueCollection
确实NOT支持这一点,但派生内部类System.Web.HttpValueCollection
DOES(通过重写ToString()
)。
不幸的是(内部)你不能直接实例化这个类,但是一个返回HttpUtility.ParseQueryString()
(你可以用String.Empty
而不是Null
来调用它)。
一旦你有一个HttpValueCollection
,你可以通过调用Add()
来填写你的原始NameValueCollection
,最后再打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”
很酷的工作:) – Sergey 2013-10-29 00:23:54
这里有两个非常有用的功能,我用所有的时间:
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;
}
我发现UriBuilder
和HttpUtility
类组合符合我的要求来操作的查询参数。 Uri
类本身是不够的,特别是因为它的Query
属性是只读的。
var uriBuilder = new UriBuilder("http://example.com/something?param1=whatever");
var queryParameters = HttpUtility.ParseQueryString(uriBuilder.Query);
queryParameters.Add("param2", "whatever2");
queryParameters.Add("param3", "whatever2");
uriBuilder.Query = queryParameters.ToString();
var urlString = uriBuilder.Uri.ToString();
上面的代码导致URL字符串:http://example.com/something?param1=whatever¶m2=whatever2¶m3=whatever2
注意,toString()方法通过Uri
财产去,否则输出字符串将有一个明确的端口80在里面。
很高兴能够使用框架类完成所有这些工作,而不必编写自己的代码。
类似的问题http://stackoverflow.com/questions/229925/outputing-a-manipulated-querystring-in-c/ http://stackoverflow.com/questions/829080/how-to-build-a- query-string-for-a-url-in-c – Palani 2010-04-09 06:15:24