如何通过 ajax 将对象数组传递给 asp.net 核心控制器

How to pass array of objects to asp.net core controller via ajax

我正在处理一个复杂的表单,其中包含从不同来源提取数据的不同部分。该表单有复选框、select 选项和输入表单。

表单有动态输入字段。所以我决定获取所有输入字段并序列化,如下面的代码所示。我能够提取所有输入数据。

我尝试了字典和参数类型,但仍然得到空参数。

我在 Whosebug 上尝试了一些建议,但没有一个能够解决问题。

当我将其传递给控制器​​时,我得到了 null/empty

如何将对象数组传递给控制器​​?

下面的控制器图片

下面的代码

$(function () {
    $("#btn-down-save").on("click", function () {;
        var serialised = $('form').serializeArray();
        console.log("serialised data", serialised);

        $.ajax({
            "type": "POST",
            "url": "/MerchantFeeSetup/CreateMerchantFee",
            "dataType": "json",
            "contentType": "application/json",
            "data": JSON.stringify(serialised),
            success: function (result) { }
        })
    })
})

控制器

[HttpPost]
public ActionResult CreateMerchantFee([FromBody] List<string> collection)
{
}

试试这个:

创建视图模型

public class NameValue
{
public string Value {get; set;}
public string Name {get; set;}
}

修正ajax

  $.ajax({
            type: "POST",
            url: "/MerchantFeeSetup/CreateMerchantFee",
            data: {"collection":serialised},
            success: function (result) { }
        })

并删除 [FromBody]

[HttpPost]
public ActionResult CreateMerchantFee( List<NameValue> collection)
{
}