获取原始(未解码)查询字符串键/值

时间:2014-01-06 19:46:17

标签: c# asp.net query-string

如何获取查询字符串中的原始(未解码)值?

我找到了 Request.Url.Query ,它成功地为我提供了原始查询字符串。但是,它给了我一个类型'字符串'和整个QS内容:我如何获得键/值对?

我确实找到HttpUtility.ParseQueryString,但这迫使我做解码。我需要原始名称/值对。

我必须为此实现自己的查询字符串解析吗?有没有人做过一个我可以使用忽略编码?我找到了Mono implementation但是这也强制编码。

谢谢!

编辑:我之所以在寻找这个,是因为有人(不是我!)编写了一些代码来加密一个值并将其放在查询字符串中。但是他们忘了先编码。 Request.Querystring()正在进行的解码使得无法解密大约50%的解码,因为加密会留下“+”和“。”之类的内容。

1 个答案:

答案 0 :(得分:6)

Request.QueryString应该为您提供一个NameValueCollection,其中包含已解码的所有键/值对。

对不起,我误解了这个问题。你自己需要解析它,但它不应该那么困难:

Request.Url.Query.Split('&').Select(pair => pair.Split('='))
    .ToDictionary(a => a[0], a => a[1]);

当然,这是假设您网址中未编码的值不包含"&"或" ="值。如果他们这样做......嗯,这就是那种URL编码的用途,不是吗?

相关问题