包含逗号c#的多个查询字符串参数值



我在ASP中有一个问题。当参数名称相同,并且该参数的值包含逗号时,尝试查询查询字符串的值。

例如,假设我有一个如下的URL…

https://example.com/mypage.aspx?val=red%2cblue& val =黑% 2 cwhite

可以看到,这个URL有2个查询字符串参数,都叫做"value",每个值都有URL编码的逗号,但是当我查询查询字符串参数"value"时,在c#中,我得到一个包含4个独立项目(红色,蓝色,黑色和白色)的数组,而我真正需要得到的是两个值(红色,蓝色和白色)。和"黑色,white")

当在c#中读取值时,URL编码似乎是"有用的"解码,这反过来又给我带来了一个问题,我不能准确地定义参数的值。我通常会读取querystring参数,并在逗号上执行分割,但这种方法不适合我。

更复杂的是,我无法知道我的值中可以出现多少逗号,或者包含了多少值。下面所有的url都可以返回,例如:

https://example.com/mypage.aspx

https://example.com/mypage.aspx?val=red%2cblue

https://example.com/mypage.aspx?val=red%2cblue& val =黑% 2 cwhite& val =红% 2 cblue % 2 cgreen

https://example.com/mypage.aspx?val=red%2cblue& val =黑% 2 cwhite& val =黄色

https://example.com/mypage.aspx?val=red%2cblue& val =黑% 2 cwhite& val =红% 2 cblue % 2 cblack % 2 cwhite % 2 cgreen % 2 cyellow

是否有一个简单的方法在c#中正确解释查询字符串值?

我想说,由于缺乏定义的标准,在查询字符串中使用多个具有相同名称的键并不是一个很好的主意。

尽管HttpUtility.ParseQueryString似乎可以以您需要的方式处理此场景:

var nameValueCollection = HttpUtility.ParseQueryString("val=red%2cblue&val=black%2cwhite");
var result = nameValueCollection.GetValues("val");
foreach (var s in result)
{
Console.WriteLine(s); // prints 2 strings: "red,blue" and "black,white"
}  

相关内容

  • 没有找到相关文章

最新更新