包含逗号 C# 的查询字符串参数的多个值
Multiple values of a querystring parameter that contain commas C#
我在 ASP.Net 中遇到问题,当参数名称相同且该参数的值包含逗号时,我试图查询查询字符串的值。
例如,假设我有一个 URL,内容如下...
https://example.com/mypage.aspx?val=red%2cblue&val=black%2cwhite
如您所见,这个 URL 有 2 个查询字符串参数,都称为“val”,每个参数的值都有经过 URL 编码的逗号,但是当我询问查询字符串时c# 中的参数“val”,当我实际需要获取的是 2 个值(“红、蓝”和“黑、白”)
当读取 C# 中的值时,似乎 URL 编码被“有效地”解码,这反过来又给我带来了一个问题,因为我无法准确定义我的参数值。我通常会读取查询字符串参数,然后对逗号进行拆分,但这种方法对我不起作用。
更复杂的是,我无法知道我的值中可以出现多少个逗号,或者包含了多少个值。例如,可以返回以下所有 URLs...
https://example.com/mypage.aspx
https://example.com/mypage.aspx?val=red%2cblue
https://example.com/mypage.aspx?val=red%2cblue&val=black%2cwhite&val=red%2cblue%2cgreen
https://example.com/mypage.aspx?val=red%2cblue&val=black%2cwhite&val=yellow
C# 中是否有正确解释查询字符串值的简单方法?
我会说在查询字符串中有多个同名的键不是very good idea,因为没有定义标准。
虽然你看起来 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"
}
我在 ASP.Net 中遇到问题,当参数名称相同且该参数的值包含逗号时,我试图查询查询字符串的值。
例如,假设我有一个 URL,内容如下...
https://example.com/mypage.aspx?val=red%2cblue&val=black%2cwhite
如您所见,这个 URL 有 2 个查询字符串参数,都称为“val”,每个参数的值都有经过 URL 编码的逗号,但是当我询问查询字符串时c# 中的参数“val”,当我实际需要获取的是 2 个值(“红、蓝”和“黑、白”)
当读取 C# 中的值时,似乎 URL 编码被“有效地”解码,这反过来又给我带来了一个问题,因为我无法准确定义我的参数值。我通常会读取查询字符串参数,然后对逗号进行拆分,但这种方法对我不起作用。
更复杂的是,我无法知道我的值中可以出现多少个逗号,或者包含了多少个值。例如,可以返回以下所有 URLs...
https://example.com/mypage.aspx
https://example.com/mypage.aspx?val=red%2cblue
https://example.com/mypage.aspx?val=red%2cblue&val=black%2cwhite&val=red%2cblue%2cgreen
https://example.com/mypage.aspx?val=red%2cblue&val=black%2cwhite&val=yellow
C# 中是否有正确解释查询字符串值的简单方法?
我会说在查询字符串中有多个同名的键不是very good idea,因为没有定义标准。
虽然你看起来 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"
}