1

我想要将?a=5&b=8部分 URL 转换为字典 { 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 不理解混合 url 编码 (UTF-8/Latin-1)

4

2 回答 2

2

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

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

如果 "?a=5&b=8" 不是来自查询字符串,您可以使用HttpUtility.ParseQueryString方法获取 NameValueCollection

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

var d = new Dictionary<String,Object>();
this.Request.QueryString.CopyTo(d);
于 2010-11-13T21:23:08.457 回答
1

也许是一个自定义模型绑定器来处理字典?似乎依赖查询字符串虽然完全有效,但与框架的精神背道而驰。它还可能使测试您的操作变得更加困难。

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

用于 ASPnet MVC 的直观字典模型绑定器

于 2010-11-14T03:03:25.120 回答