我正在尝试将 json“集合”发送到 MVC3 控制器。当传入的对象是一个数组之前,我已经相当容易地做到了这一点,但是在这种情况下没有数组(除非嵌套的 {} 是一个'数组'?)。
我也尝试了各种模型配置,例如:FormCollection
、Dictionary<string, FooBar[]>
和其他一些,但它始终为空。
我做错了什么导致花哨的 json-binder-thing 不起作用?
谢谢。
构建 JSON 对象
function getJson() {
var foobars = {};
foobars["FooBar1"] = { "Foo": "baz1", "Bar": 1 };
foobars["FooBar2"] = { "Foo": "baz2", "Bar": 2 };
}
getJson() 产生这个 Json 对象
{
"FooBar1" :
{
"Foo":"baz1",
"Bar":1
},
"FooBar2" :
{
"Foo":"baz2",
"Bar":2
}
}
楷模
public class FooBarModel
{
public FooBar[] FooBars { get; set; }
}
public class FooBar
{
public string Foo { get; set; }
public int Bar { get; set; }
}
控制器
[HttpPost]
public void ParseFooBars(FooBarModel model)
{
//model is null
}
jQuery的阿贾克斯
$.ajax({
url: "MyController/ParseFooBars",
data: JSON.stringify(getJson()),
type: "POST",
dataType: "json",
//contentType: "application/json; charset=utf-8",
contentType: "application/json",
success: function () {
},
error: function () {
}
});