如何使用内部 NameValueCollection 初始化 NameValueCollection

how to initialize NameValueCollection with inner NameValueCollection

在我尝试用内部 NameValueCollection 初始化 NameValueCollection 后,c# 编译器说它必须是 NameValueCollection(string,string)。

正如我在初始化时调用Add函数时所想的那样

是否有任何其他方法可以基于 NameValueCollection 在一行中初始化相同的内容?

原因是我必须 POST 数据到 HTTPAddress 并且我使用这个 function

这是我的例子,但它不起作用:

NameValueCollection data = new NameValueCollection()
{
   { "key1", "value1"},
   { "key2", new NameValueCollection()
   {
       { "key2sub", "value"}
   }
};

不是really.The UploadValues(..)方法接受NameValueCollectionNameValueCollection只接受string

该方法的目的是转换您的数据...

UploadValues("http://www.example.com/", new NameValueCollection()
{
   { "key1", "value1" },
   { "key2", "value2" }
};

...进入URL:

http://www.example.com/?key1=value1&key2=value2

如果您想发送更多信息,您可以将分隔字符串作为其中一个键的值,然后在另一端再次将其分开。

UploadValues("http://www.example.com/", new NameValueCollection()
{
   { "key1", "value1" },
   { "key2", "value2,value3,value4" }
};

应该会产生如下内容:

http://www.example.com/?key1=value1&key2=value2,value3,value4

但最好的解决方案是 @hmnzr said in their answer (now-deleted), to avoid NameValueCollection entirely and upload a custom object serialized as JSON using the UploadString(..) 方法。