如何在asp.net c#中获取所有url参数及其值的列表?

在我的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); } } 

HttpRequest.QueryString对象已经是一个集合。 基本上是NameValueCollection。 请在此处查看有关MSDN的更详细说明。 要将此集合转换为字典,您可以添加扩展方法,如下所示。

  public static class NameValueCollectionExtension { public static IDictionary ToDictionary(this NameValueCollection sourceCollection) { return sourceCollection.Cast() .Select(i => new { Key = i, Value = sourceCollection[i] }) .ToDictionary(p => p.Key, p => p.Value); } } 

然后你基本上可以执行以下操作,因为Request.QueryString基本上是一个NameValueCollection

 IDictionary dc = Request.QueryString.ToDictionary(); 

我经常遇到同样的问题。 我总是这样做:

 Dictionary allRequestParamsDictionary = Request.Params.AllKeys.ToDictionary(x => x, x => Request.Params[x]); 

这为请求提供了所有参数,包括QueryString,Body,ServerVariables和Cookie变量。 仅限QueryString执行此操作:

 Dictionary queryStringDictionary = Request.QueryString.AllKeys.ToDictionary(x => x, x => Request.Params[x]);