我重新创建了一个示例应用程序来反映我所面临的情况。可以在这里获取(如果它有助于排除故障)。
我有以下模型:
public class MyModel
{
public string Id { get; set; }
public int[] Members { get; set; }
}
我想将它们的列表发送到我的控制器,所以我有一个 Action 方法:
[HttpPost]
public ActionResult Index(List<MyModel> myModel)
{
return View();
}
构建和发送有效载荷的 Javascript 如下:
$(function () {
$('#submitButton').on('click', function () {
var memberSelectors = $([]);
for (var i = 0; i < 4; i++) {
var item = {
id: 'idval-' + i,
vals: [5, 2, 8]
};
memberSelectors.push(item);
}
var models = [];
memberSelectors.each(function (idx, val) {
var myModel = {
'myModel.Id': val['id'].toString(),
'myModel.Members': val.vals
};
models.push(myModel);
});
$.ajax({
url: '/Home/Index',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(models)
});
});
})
如果有人可以建议为什么 json 有效负载没有成功更改为 Action 参数中的 MyModel 对象列表,我将非常感激。
只是为了确认一下,json有效负载是我想要的确切形式。即
[{
"myModel.Id": "idval-0",
"myModel.Members": [5,
2,
8]
},
{
"myModel.Id": "idval-1",
"myModel.Members": [5,
2,
8]
},
{
"myModel.Id": "idval-2",
"myModel.Members": [5,
2,
8]
},
{
"myModel.Id": "idval-3",
"myModel.Members": [5,
2,
8]
}]
谢谢!
编辑: json 有效负载现在是一个正确的 Javascript 数组。这是发送到服务器的内容:
[{"myModel.Id":"idval-0","myModel.Members":[5,2,8]},{"myModel.Id":"idval-1","myModel.Members":[5,2,8]},{"myModel.Id":"idval-2","myModel.Members":[5,2,8]},{"myModel.Id":"idval-3","myModel.Members":[5,2,8]}]