在我的 asp.net c# 解决方案中,我想获取所有 url 参数的字典,其中键是参数名称,值是参数值。我怎样才能做到这一点?
谢谢。
你需要 HttpUtility.ParseQueryString
NameValueCollection qscollection = HttpUtility.ParseQueryString(querystring);
您可以使用它来获取查询字符串值本身:
Request.Url.Query
把它放在一起
NameValueCollection qscollection = HttpUtility.ParseQueryString(Request.Url.Query);
更多信息请访问http://msdn.microsoft.com/en-us/library/ms150046.aspx
不使用内置方法的更难的手动方法是:
NameValueCollection queryParameters = new NameValueCollection();
string[] querySegments = queryString.Split('&');
foreach(string segment in querySegments)
{
string[] parts = segment.Split('=');
if (parts.Length > 0)
{
string key = parts[0].Trim(new char[] { '?', ' ' });
string val = parts[1].Trim();
queryParameters.Add(key, val);
}
}
我经常遇到同样的问题。我总是这样做:
Dictionary<string, string> allRequestParamsDictionary = Request.Params.AllKeys.ToDictionary(x => x, x => Request.Params[x]);
这给出了请求的所有参数,包括 QueryString、Body、ServerVariables 和 Cookie 变量。仅对 QueryString 执行此操作:
Dictionary<string, string> queryStringDictionary = Request.QueryString.AllKeys.ToDictionary(x => x, x => Request.Params[x]);
该HttpRequest.QueryString
对象已经是一个集合。基本上是一个 NameValueCollection。在此处查看有关 MSDN 的更详细说明。要将此集合转换为字典,您可以添加一个扩展方法,如下所示。
public static class NameValueCollectionExtension
{
public static IDictionary<string, string> ToDictionary(this NameValueCollection sourceCollection)
{
return sourceCollection.Cast<string>()
.Select(i => new { Key = i, Value = sourceCollection[i] })
.ToDictionary(p => p.Key, p => p.Value);
}
}
然后你基本上可以做以下事情,因为 Request.QueryString 基本上是一个 NameValueCollection
IDictionary<string,string> dc = Request.QueryString.ToDictionary();