c# - 在 .NET 中操作 QueryString

标签 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 控制台应用程序(也尝试过早期的框架)。如果我不给它一个空字符串,它就会开始工作,但是有这么多帖子推荐这个作为解决方案,这似乎很奇怪。将它包装在一个 try/catch 语句中,只是为了查看是否发生了任何奇怪的事情,没有抛出异常。我真的应该只给它一个随机字符串“a=b”,然后将其从 NameValueCollection 中删除以获得可用的 HttpValueCollection 吗?

我的最终目标是将它与 UriBuilder 一起使用,从中获取 Query 属性并将其提供给 ParseQueryString。但是有时可能没有查询字符串,UriBuilder.Query 将返回一个空字符串...因此出现了这个问题。

编辑: 以防有人感到困惑,我打算让它打印出来的是与集合等效的查询字符串。因此,如果我要向集合中添加另一个值

test.Add("other", "value");

ToString() 方法的结果应该是

"hello=world&other=value"

编辑嗨,戴夫 我的主张?为什么它不起作用... enter image description here

最佳答案

你的代码是错误的,要打印测试内容你应该这样做:

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

My debug test

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

关于c# - 在 .NET 中操作 QueryString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493062/

相关文章:

c# - CaSTLe DynamicProxy IInterceptor 或 ProxyGenerator 应该缓存吗?

c# - 替代 C# 中的内联?

c# - 如何在 SQL Server 查询中将 varchar 转换为十进制?

.net - Microsoft.AspNet.Identity 源代码可用性

c - 加载使用另一个共享库的共享库

linux - 无法连接 openvpn ubuntu 16.04

c++ - cmake 和 boost-signals 的问题

c# - 执行位于 JavaScript 代码隐藏中的函数?

c# - ReSharper 2020.2.4在C#9.0记录上失败

c# - 问题为元素 'ImageParameters' 不能包含子元素 'ImageParameter'