-1

我重新创建了一个示例应用程序来反映我所面临的情况。可以在这里获取(如果它有助于排除故障)。

我有以下模型:

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]}]
4

1 回答 1

1

您的 JSON 结构不能准确地表示您要绑定的内容。MyModel在 JSON 术语中,您试图绑定到's数组。

您的结构应如下所示:

var models = [
    {
        "Id": 1,
        "Members": [1,2,3]
    }
]
于 2013-09-14T02:51:16.877 回答