1
我讀過NameValueCollection允許添加重複鍵,但是,當我嘗試使用它時,似乎不是這種情況。將重複鍵添加到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,我的所有值都被附加到同一個鍵上。
我錯過了什麼?
這是預期的行爲。字典本質上是一個加快的哈希表。關鍵值必須是唯一的。 – jstromwick
如果該值包含逗號,該怎麼辦?例如,我可以創建一個Uri:'http://example.com/q?value = a%2Cb&value = b%2Cc'。這些值將被解碼爲'a,b'和'b,c',並且如果你將它們擊中在一起,它們將最終成爲'a,b,b,c'。這不能這樣工作。應該有一個強烈的警告,即使用重複鍵意味着你的值不能包含逗號,否則會在參數值之間出現不可逆轉的明確界限。如果NameValueCollection被正確實現,它將在數組中維護具有相同名稱的值,而不是逗號分隔的字符串。 – Triynko