如何将对象数组发送到控制器方法?

我需要你的帮助,我在控制器端有这段代码

public bool DraftMessage(message[] draftMessages, HttpPostedFileBase[] files = null)
{    
  return true;
}

我使用这个客户端代码发送数据

 function DraftMessage()
    {
        var myArray = [{ 'To': [1, 2], "Title": "Hello" }, { 'To': [1, 2], "Title": "Hello" }]

        $.ajax({
            type: "POST",
            url: "@Url.Action("DraftMessage","Activities")",
            datatype: "json",
            traditional: true,
            data: JSON.stringify({ draftMessages: myArray }),
                beforeSend: function () { }
        }).done(function (data) {});
    }
    $("input, select, textarea").change(function () { DraftMessage(); });
    var contents = $('.note-editable').html();
    $(".compose-message").on("blur", ".note-editable", function () {
        if (contents != $(this).html()) {
            DraftMessage();
            contents = $(this).html();
        }
    });

但是当我调试它时,我发现控制器中的消息数组为空,所以任何人都可以引导我了解我做错了什么,并帮助我解决此问题。


你需要将contentType设置为"application/json"

function DraftMessage() {
    var myArray = [{ 'To': [1, 2], "Title": "Hello" }, { 'To': [1, 2], "Title": "Hello" }];

    $.ajax({
        type: "POST",
        url: "@Url.Action("DraftMessage","Home")",
        contentType: "application/json",
        data: JSON.stringify({ draftMessages: myArray })
    }).done(function (data) {
        console.log(data);
    });
}

contentType标头的默认值是"application/x-www-form-urlencoded" 。 由于我们正在发送一个复杂数据结构的json字符串版本,我们应该明确指定contentType

链接地址: http://www.djcxy.com/p/46149.html

上一篇: How to send array of objects to a controller method?

下一篇: Ajax with asp.net aspx returns Undefined