【问题标题】:How to get a list of all the url parameters with their values in asp.net c#?如何在asp.net c#中获取所有url参数及其值的列表?
【发布时间】:2013-06-18 01:20:10
【问题描述】:

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

谢谢。

【问题讨论】:

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

标签: c# asp.net url parameters


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    HttpRequest.QueryString 对象已经是一个集合。基本上是一个 NameValueCollection。查看 here 以获取 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();
    

    【讨论】:

      【解决方案3】:

      你需要 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);
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-10-26
        • 2017-12-23
        • 2012-04-11
        • 2013-10-21
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2016-08-20
        • 1970-01-01
        相关资源
        最近更新 更多