【发布时间】:2011-09-20 23:41:37
【问题描述】:
我在 StackOverflow 上看到了多个示例和答案,解释说这是创建要操作的 QueryString 的推荐方法。
NameValueCollection test = HttpUtility.ParseQueryString(String.Empty);
test.Add("hello", "world");
Console.WriteLine(test.ToString());
但它返回的只是
System.Collections.Specialized.NameValueCollection
发生了什么事?用于测试的简单 .NET4 控制台应用程序(也尝试过早期的框架)。如果我不给它一个空字符串,它就会开始工作,但有这么多帖子推荐它作为解决方案似乎很奇怪。也将其包装在 try/catch 语句中,以查看是否发生了任何奇怪的事情,不会引发异常。我真的应该只给它一个随机字符串“a = b”,然后将其从 NameValueCollection 中删除以获得可用的 HttpValueCollection?
我的最终目标是将它与 UriBuilder 一起使用,从中获取 Query 属性并将其提供给 ParseQueryString。但是有时可能没有查询字符串,UriBuilder.Query 会返回一个空字符串......因此出现了这个问题。
编辑:如果有人感到困惑,我打算打印出来的是与集合等效的查询字符串。因此,如果我要为集合添加另一个值
test.Add("other", "value");
ToString() 方法的结果应该是
"hello=world&other=value"
编辑你好,戴夫 我的主张?为什么它不起作用...
【问题讨论】:
-
您使用的是哪个版本的 .NET?
-
这对我来说很好用。我从问题中获取了您的确切代码,它产生了您想要的结果。如果我不打电话给
Add,那么当我打电话给ToString()时会得到一个空字符串 -
尝试了所有 .NET 版本:1.1、2、3、3.5 和 4。但是我在 Mono(在 linux 中)上运行。刚开始找一个 Windows 测试环境,果然可以用。一定是 Mono 的 System.Web 中的一个 bug :(
-
哇。很高兴知道。祝你好运!
-
Nicholi,你是个好人,我喜欢你穿着的 android 头像,但下次请从头开始告诉你你在另一个平台上,用如此重要的细节标记你的问题,或者我给你一个 iPhone!
标签: c# .net linux mono query-string