Asp.net mvc ASP.NET MVC解析URL查询部分

Asp.net mvc ASP.NET MVC解析URL查询部分,asp.net-mvc,urldecode,Asp.net Mvc,Urldecode,我想要一些东西将URL的?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 turn

我想要一些东西将URL的
?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
(拉丁语-1)编码用于非ASCII字符


这里有一个相关的问题:

Request.QueryString是一个类似于字典的NameValueCollection

它可以包含同一个键的多个值

如果“?a=5&b=8”不是来自querystring,则可以使用HttpUtility.ParseQueryString方法获取NameValueCollection

如果你想要一本真正的字典:

var d = new Dictionary<String,Object>();
this.Request.QueryString.CopyTo(d);
var d=newdictionary();
this.Request.QueryString.CopyTo(d);

是否可以使用自定义modelbinder来处理字典?似乎依赖查询字符串虽然完全有效,但却违背了框架的精神。这也可能使测试你的行为变得更加困难

我的第一个想法是,这已经由默认的modelbinder工具处理了,但情况似乎并非如此。也就是说,我还没有尝试过,但这就是我要开始的地方:


Request.QueryString的问题是它也会取消对值的扫描,这是我需要处理的取消扫描。详细信息:firefox可以使用utf-8或拉丁语-1来转义字符,但ASP.NETMVC始终使用其中一种。