我已经读过NameValueCollection允许添加重复键,但是当我尝试使用它时似乎不是这种情况。
我的代码
using (var wb = new WebClient())
{
var data = new NameValueCollection();
var sourceData = (List<Dictionary<string, object>>)dic["mapData"];
var countSource = sourceData.Count;
foreach (var item in (List<Dictionary<string, object>>)dic["mapData"])
{
data.Add("pp", item["Latitude"].ToString() + "," + item["Longitude"].ToString());
}
var dataCount = data.Count;
var response = wb.UploadValues(@"http://dev.virtualearth.net/REST/V1/Imagery/Map/road/?mapArea=" + swLat.ToString() + "," + swLong + "," + neLat + "," + neLong + "&mapSize=800,600&key=" + key, "POST", data);
return this.LargeJson(new { imageData = CreateBase64Image(response) });
}
我在观察什么
我的sourceData包含36个项目
我正在迭代sourceData并将项目添加到我的NameValueCollection数据并添加具有相同键“pp”的项目
我期待在我的数据NameValueCollection中有36个项目,但我只得到1并且我的所有值都被附加到同一个键。
我错过了什么?
答案 0 :(得分:8)
这是预期的行为 - 请参阅the documentation:
如果指定的密钥已存在于目标NameValueCollection中 实例,将指定的值添加到现有的逗号分隔中 “value1,value2,value3”形式的值列表。价值观是 与目标NameValueCollection中的相同键相关联 实例