如何获取查询字符串中的原始(未解码)值?
我找到了 Request.Url.Query ,它成功地为我提供了原始查询字符串。但是,它给了我一个类型'字符串'和整个QS内容:我如何获得键/值对?
我确实找到HttpUtility.ParseQueryString,但这迫使我做解码。我需要原始名称/值对。
我必须为此实现自己的查询字符串解析吗?有没有人做过一个我可以使用忽略编码?我找到了Mono implementation但是这也强制编码。
谢谢!
编辑:我之所以在寻找这个,是因为有人(不是我!)编写了一些代码来加密一个值并将其放在查询字符串中。但是他们忘了先编码。 Request.Querystring()正在进行的解码使得无法解密大约50%的解码,因为加密会留下“+”和“。”之类的内容。
答案 0 :(得分:6)
Request.QueryString
应该为您提供一个NameValueCollection
,其中包含已解码的所有键/值对。
对不起,我误解了这个问题。你自己需要解析它,但它不应该那么困难:
Request.Url.Query.Split('&').Select(pair => pair.Split('='))
.ToDictionary(a => a[0], a => a[1]);
当然,这是假设您网址中未编码的值不包含"&"或" ="值。如果他们这样做......嗯,这就是那种URL编码的用途,不是吗?