将 json 数据发布到 mvc 操作时,我遇到了 ASP.NET MVC 4 的问题。
我用 aDictionary<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
在服务器上使用和解析字符串,但这感觉不对。