【发布时间】:2019-09-17 11:36:53
【问题描述】:
我有一个需要枚举值列表的 Web API 端点。我正在使用 HttpUtility.ParseQueryString 生成查询字符串,我想在查询字符串中传递多个键值对,如下所示,
../api/getdata?myEnum=One&myEnum=Two&myEnum=Three
但是,ParseQueryString 正在创建查询字符串 url,如下所示,
../api/getdata?myEnum=One%2cTwo%2cThree
这是我的代码,
var queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
queryString.Add("myEnum", "One");
queryString.Add("myEnum", "Two");
queryString.Add("myEnum", "Three");
如何使用重复键创建预期的查询字符串 url。
../api/getdata?myEnum=One&myEnum=Two&myEnum=Three
【问题讨论】:
-
ParseQueryString 字符串返回一个 NameValueCollection,每个键不能有重复的记录,因此值将是“一、二、三”。您始终可以编写一个自定义方法来拆分值并以您想要的方式返回它。我不确定为什么你需要发送相同的参数并且不能只在另一边拆分值(如果你当然可以访问)
-
不幸的是there is no standard 关于如何发送多个值,而.NET 在很大程度上决定在任何地方使用
NameValueCollection,这意味着它几乎必须使用逗号分隔方法。您会认为手动构建查询字符串是一件容易的事,如此简单以至于框架中必须有简单的方法通过适当的编码来实现,但是you'd be mistaken。
标签: c# .net-core query-string