我在 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"
编辑嗨,戴夫 我的主张?为什么它不起作用...
最佳答案
你的代码是错误的,要打印测试内容你应该这样做:
foreach(string s in test.AllKeys)
{
Console.WriteLine("{0}-{1}", s, test[s]);
}
编辑: 我不明白你的意思 Nicholi,看到这张图片,我得到了正确的类 HttpValueCollection
也是从解析方法中的空字符串开始,而不是添加你好 key ,看到我的 test.Add 被注释掉了,AllKeys 是空的。
所以我的 test.ToString()
返回的是空的,不是 System.Collections.Specialized.NameValueCollection
正如您在问题中提到的那样。
您还想要/需要/询问/要求什么? ;-)
关于c# - 在 .NET 中操作 QueryString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493062/