在.NET中操作QueryStrings

时间:2011-09-20 23:41:37

标签: c# .net linux mono query-string

我在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 我的主张?为什么它不起作用...... enter image description here

2 个答案:

答案 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正如您在问题中提到的那样。

My debug test

您还想要/需要/要求/要求什么? ; - )

答案 1 :(得分:0)

显然这是Mono中一个古老的错误(在我的问题中我忘了提及!!)。 我在MonoDevelop 2.6上使用Mono 2.10.5。 似乎与Microsoft的System.Web没有任何问题。

Just got it fixed now.