如何使用内部NameValueCollection初始化NameValueCollection

4

当我试图使用内部的NameValueCollection初始化NameValueCollection时,c#编译器说必须是NameValueCollection(string, string)。

因为我在初始化时调用Add函数时会这样想。

  • void Add(NameValueCollection c);
  • void Add(string name, string value);

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

原因是我必须将数据POST到HTTPAddress并使用此函数

这是我的示例,无法工作:

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

1
你需要将名称值集合的所有部分都设置为相同类型<string,string>。这在“NameValueCollection”中是固有的。 - vipersassassin
1个回答

9
不完全正确。UploadValues(..) 方法需要一个 NameValueCollection,而 NameValueCollection 只接受 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在他们的回答中所说的那样(现已删除),完全避免使用NameValueCollection,并使用UploadString(..)方法上传作为JSON序列化的自定义对象。


我不会使用NameValueCollection来完成我的任务,但谢谢! - Max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接