-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 構造は、バインドしようとしているものを正確に表していません。JSON 用語では、の配列にバインドしようとしていますMyModel

構造は次のようになります。

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