我在StackOverflow上看到了多个示例和答案,解释说这是创建QueryString来操作的推荐方法。
NameValueCollection test = HttpUtility.ParseQueryString(String.Empty);
test.Add("hello", "world");
Console.WriteLine(test.ToString());
但它返回的只是
System.Collections.Specialized.NameValueCollection
发生了什么事?用于测试的简单.NET4控制台应用程序(也尝试过早期的Frameworks)。如果我不给它一个空字符串它开始工作,但似乎很奇怪有很多帖子推荐这个解决方案。将它包装在try / catch语句中,只是为了查看是否有任何奇怪的事情发生,没有抛出异常。我真的应该给它一个随机字符串“a = b”,然后从NameValueCollection中删除它以获得可用的HttpValueCollection吗?
我的最终目标是在UriBuilder中使用它,从中抓取Query属性并将其提供给ParseQueryString。但是有时可能没有查询字符串,UriBuilder.Query将返回一个空字符串...因此出现了这个问题。
编辑:如果有人感到困惑,我打算将其打印出来的是与该集合等效的查询字符串。所以如果我要为集合添加另一个值
test.Add("other", "value");
ToString()方法的结果应为
"hello=world&other=value"
编辑HI DAVE 我的主张?为什么它不起作用......
答案 0 :(得分:4)
你的代码错了,要打印测试内容你应该这样做:
foreach(string s in test.AllKeys)
{
Console.WriteLine("{0}-{1}", s, test[s]);
}
编辑:我不明白你的观点Nicholi,看到这张图片,我从parse方法中的空字符串开始得到正确的类HttpValueCollection
而不添加hello键,看到我的test.Add被注释掉了,AllKeys是空的。
所以我的test.ToString()
返回空白,不 System.Collections.Specialized.NameValueCollection
正如您在问题中提到的那样。
您还想要/需要/要求/要求什么? ; - )
答案 1 :(得分:0)
显然这是Mono中一个古老的错误(在我的问题中我忘了提及!!)。 我在MonoDevelop 2.6上使用Mono 2.10.5。 似乎与Microsoft的System.Web没有任何问题。