我想要将某个网址的?a=5&b=8
部分转换为字典{a:5,b:8}。
.net中有这样的方法还是我自己?
我需要解析查询部分,以便我可以实现自己的URL解码。 问题是Firefox使用不同的编码(UTF8或ISO-8859-1),具体取决于使用的字母表。
示例:
Firefox编码如下:
- v v
http://localhost:8041/Reforge.aspx?name=ArcânisГ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%C3%A2nis%D0%93`
请注意,UTF8
编码用于非ASCII字符。
- v
http://localhost:8041/Reforge.aspx?name=Arcâ
Firefox turns into
http://localhost:8041/Reforge.aspx?name=Arc%E2
请注意,ISO-8859-1
(Latin-1)编码用于非ASCII字符。
以下是相关问题:ASP.NET MVC does not understand mixed url encoding (UTF-8/Latin-1)
答案 0 :(得分:2)
Request.QueryString是一个NameValueCollection,就像一个字典。
它可以包含同一个键的多个值。
如果“?a = 5& b = 8”不是来自查询字符串,您可以使用 HttpUtility.ParseQueryString 方法获取NameValueCollection
如果你想要一本真正的字典:
var d = new Dictionary<String,Object>();
this.Request.QueryString.CopyTo(d);
答案 1 :(得分:1)
也许是自定义模型绑定器来处理字典?它似乎依赖于查询字符串,虽然完全有效,但却违背了框架的精神。它也可能使您的行动测试更加困难。
我的第一个想法是,这已经由默认的模型绑定设备处理,但似乎并非如此。那就是说,我没有尝试过,但这是我开始的地方: