POST Javascript 数组到 MVC 控制器 .NET 5.0

POST Javascript array to MVC controller .NET 5.0

我正在尝试将一些数据从我的 javascript 数组发送到我的 mvc 控制器。 当我通过 im 以我的方法结尾进行调试时 public void GetJSArray(List<SelectorModel> selectorModels)

但是 selectorModelsnull

这是我的模型。

public class SelectorModel
    {
        public int ID { get; set; }
        public string Cords { get; set; }
        public string Name { get; set; }
    }

这是我在控制器中的 C# 代码。

 [HttpPost]
        public void GetJSArray(List<SelectorModel> selectorModels)
        {
            //Code here           
        }

这是我的 JavaScript/Ajax

function SaveInfoSpots() {
    var savedeSpots = JSON.stringify({ selectorModels: infospots });
    $.ajax({
        type: "POST",
        url: '/Home/GetJSArray',
        contentType: "application/json; charset=utf-8",
        dataType: 'JSON',//json
        data: savedeSpots,
        traditional: true
    });
}

如果我做一个 console.log(savedeSpots) 我明白了。 {"selectorModels":[{"ID":1,"Name":"Infospot1","Cords":"5000.00, 2293.85, 2278.05"},{"ID":1,"Name":"Infospot2","Cords":"1.94, 584.50, 5000.00"},{"ID":1,"Name":"Infospot3","Cords":"5000.00, -2705.97, -277.02"},{"ID":1,"Name":"Infospot4","Cords":"5000.00, 504.93, -2845.93"}]}

[FromBody] 添加到您的控制器列表参数中,例如

public void GetJSArray([FromBody] List<SelectorModel> selectorModels)

尝试移除

traditional: true

 charset=utf-8

也来自 ajax 调用。然后应该在控制器中看到填充列表。

代码中有两个地方需要修改:

首先,关于model binding,在动作参数上添加[FromBody]属性:

[HttpPost]
public void GetJSArray([FromBody]List<SelectorModel> selectorModels)
{
    //Code here           
}

其次,你的 API 需要一个数组而不是一个对象,所以当你调用 API 时,你需要 post 这样的参数:

[
    {
        "ID": 1,
        "Name": "Infospot1",
        "Cords": "5000.00, 2293.85, 2278.05"
    },
    {
        "ID": 1,
        "Name": "Infospot2",
        "Cords": "1.94, 584.50, 5000.00"
    },
    {
        "ID": 1,
        "Name": "Infospot3",
        "Cords": "5000.00, -2705.97, -277.02"
    },
    {
        "ID": 1,
        "Name": "Infospot4",
        "Cords": "5000.00, 504.93, -2845.93"
    }
]

不是 {"selectorModels":...} 格式。

如果你只需要 APIs,创建 webapi 项目比 mvc 项目更好。