如何在asp.net中为querystring参数检索多个值

时间:2015-10-28 04:05:33

标签: asp.net request.querystring

假设使用参数的多个值调用页面,例如:

http://example.com/mypage.aspx?x=1&x=2

我发现request.QueryString(" x")=" 1,2"。

好的,没关系,我想我可以在它上面做一个string.split来获取各个值。

但如果查询是

http://example.com/mypage.aspx?x=1,2&x=3

然后request.QueryString(" x")=" 1,2,3"。

有没有办法用嵌入的逗号区分多个值和值?我渴望回忆一下,在Java中你会得到一个数组,每个值都有一个单独的条目。

(我试过说" mypage.aspx?x = 1%2c& x = 3",但这也给出了" 1,2,3"。)

2 个答案:

答案 0 :(得分:2)

我不认为有直接的方法,但你可以通过一些解决方法来实现它:mypage.aspx?x = 1,2& x = 3 with HttpUtility.UrlDecode(Request.QueryString.ToString())给出输出为“x = 1,2& x = 3”

代码示例:

  if (Request.QueryString != null & Request.QueryString.Count > 0)
  {
       var queryStrings = HttpUtility.UrlDecode(Request.QueryString.ToString
       ());
       var arrQueryStrings = queryStrings.Split('&');
       //var length = arrQueryStrings.Length;
       var part1 = arrQueryStrings[0];//x=1,2
       var part2 = arrQueryStrings[1];//x=3

      //Other option: get it from Request RawUrl and split it
      //var rawUrl = Request.RawUrl;
   }

答案 1 :(得分:1)

这可能会对您有所帮助 - 我刚刚创建了一个小型控制台代码段供您复制和粘贴,以实现它的工作原理:

using System;
using System.Collections.Generic;
using System.Linq;

namespace Exercise1
{
    internal class Program
    {
        public static void Main()
        {
            var urlUri = new Uri(new Uri("htt://www.myapp.com/"), "news?x=1,2&x=3&x=4,5&x=");
            var queryData = urlUri.Query.Split(new[] {'&'}, StringSplitOptions.RemoveEmptyEntries);

            var resultValue = new List<string>(queryData.Count());
            resultValue.AddRange(queryData.Select(d => d.Split(new[] {'='}, StringSplitOptions.RemoveEmptyEntries)).Where(result => result != null && result.Count() == 2).Select(result => result[1]));

            foreach (var value in resultValue)
            {
                Console.WriteLine(value);
            }

            Console.ReadLine();

        }
    }

}

基本上我是先和&amp ;. 然后我分裂=

因此,您可以准备一个数组,以您想要的方式进行游戏。

这里我使用的是Uri对象,在您的情况下,您将从Request.Url.Query读取查询字符串 enter image description here