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

本文关键字:参数 url 列表 asp net | 更新日期: 2023-09-27 18:19:22

在我的asp.net c#解决方案中,我想获得所有url参数的字典,其中键是参数名称,值是参数值。我该怎么做呢?

谢谢。

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

您需要HttpUtility。ParseQueryString

NameValueCollection qscollection = HttpUtility.ParseQueryString(querystring);

您可以使用它来获取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);
        }
    }

那么你基本上可以这样做,因为请求。QueryString基本上是一个NameValueCollection

IDictionary<string,string> dc = Request.QueryString.ToDictionary();