0
發佈JSON數據到一個MVC行動時,我有一個問題,ASP.NET MVC 4。JSON數組不正確的反序列化
我用Dictionary<string, string[]>
表示含有多個命名陣列javascript對象。但是,而不是在一個關鍵的存儲陣列值,每個數組值有其自己的密鑰
var data = {
foo1: { bar1: ['a', 'b', 'c' ], bar2: ['z'] },
foo2: { bar3: ['d', 'e' ] }
};
$.ajax({
url: '/mvc/SomeAction',
type: 'POST',
data: data,
dataType: 'json',
contentType: 'application/json',
success: myCallback
});
我的MVC模式是這樣的:
public class Data
{
public Dictionary<string, string[]> foo1 { get; set; }
public Dictionary<string, string[]> foo2 { get; set; }
}
[HttpPost]
public JsonResult SomeAction(Data data)
{
// Instead of having a key named bar1 with the value as an array of strings,
// this is what I get:
// data.foo1 =
// {
// (key: "bar1[0]", value: null),
// (key: "bar1[1]", value: null),
// (key: "bar1[2]", value: null),
// (key: "bar2[0]", value: null)
// }
// etc..
}
這似乎是MVC模型綁定不正確地反序列化json到數據模型。
這僅如果字典的值是數組,如果是它按預期另一個目的發生。
如何解決這個任何想法非常讚賞。
在我將不得不使用JSON.stringify
和解析服務器上的串最壞的情況,但感覺不對。
這正是應該發生的。傳入數據的數組應該被轉換爲索引元素。任何一種'IEnumerable'都會以'var [N]'結尾,其中'var'是標識符名稱,'N'是一個索引。 –
@BradChristie你能解釋爲什麼它應該是這樣嗎?我期望的關鍵是「bar1」,值是「[」a「,」b「,」c「]'。 –
我正在elluding到的是,協議預計,如果一個單獨的變量名稱具有多個值,而不是'富= 1,2,3'請求是代替'FOO [] = 1&FOO [] = 2&FOO [] = 3 '。現在,就MVC爲什麼沒有正確翻譯,我不確定。但是你已經展示了它應該如何通過電線發送。 –