2

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

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

  • 无效添加(NameValueCollection c);
  • 无效添加(字符串名称,字符串值);

基于NameValueCollection,有没有其他方法可以在一行上初始化相同的?

原因是我必须将数据发布到 HTTPAddress 并且我使用此功能

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

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

1 回答 1

6

不是真的。该UploadValues(..)方法采用 a NameValueCollection,并且 aNameValueCollection只接受string

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

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

...进入网址:

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上传一个序列化为 JSON 的自定义对象。UploadString(..)

于 2017-05-03T15:22:21.433 回答