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

如何在asp.net c#中获取所有url参数及其值的列表?,c#,asp.net,url,parameters,C#,Asp.net,Url,Parameters,在我的asp.net c#解决方案中,我希望得到一个包含所有url参数的字典,其中键是参数名,值是参数值。我该怎么做 谢谢。您需要HttpUtility.ParseQueryString NameValueCollection qscollection = HttpUtility.ParseQueryString(querystring); 您可以使用它来获取querystring值本身: Request.Url.Query 拼凑 NameValueCollection qscollect

在我的asp.net c#解决方案中,我希望得到一个包含所有url参数的字典,其中键是参数名,值是参数值。我该怎么做


谢谢。

您需要HttpUtility.ParseQueryString

NameValueCollection qscollection = HttpUtility.ParseQueryString(querystring);
您可以使用它来获取querystring值本身:

 Request.Url.Query
拼凑

NameValueCollection qscollection = HttpUtility.ParseQueryString(Request.Url.Query);
更多信息请访问

不使用内置方法的较难的手动方式是:

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<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);

        }

    }
公共静态类NameValueCollectionExtension
{
公共静态IDictionary ToDictionary(此NameValueCollection sourceCollection)
{
返回sourceCollection.Cast()
.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();
IDictionary dc=Request.QueryString.ToDictionary();

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

Dictionary<string, string> allRequestParamsDictionary = Request.Params.AllKeys.ToDictionary(x => x, x => Request.Params[x]);
Dictionary 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]);
Dictionary queryStringDictionary=Request.QueryString.AllKeys.ToDictionary(x=>x,x=>Request.Params[x]);

在整个解决方案中,或仅在单个请求的上下文中,如/page?key1=value1&key2=value2有什么区别?(但我想我指的是一个请求)