C# ASP.NET Core 2.1将json列表传递给ajax

C# ASP.NET Core 2.1将json列表传递给ajax,c#,asp.net,asp.net-mvc,asp.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,我有一个控制器,它接受ApplicationListViewModel类型的列表。然而,我的ajax函数似乎没有向它发送任何信息,即使我在控制台中检查过它 控制器 [HttpPost] public ActionResult Delete(List<ApplicationsListViewModel> Input) { foreach (var item in Input) { applicationsData.Delete(item.Id);

我有一个控制器,它接受ApplicationListViewModel类型的列表。然而,我的ajax函数似乎没有向它发送任何信息,即使我在控制台中检查过它

控制器

[HttpPost]
public ActionResult Delete(List<ApplicationsListViewModel> Input)
{
    foreach (var item in Input)
    {
        applicationsData.Delete(item.Id);
    }
    return Ok();
}
Ajax函数

$(".subnavigation-list").on("click", "#delete", function (e) {
    selected = table.rows('.selected').data().toArray();
    var form_data = selected;
    $.ajax({
        url: "@Url.Action("Delete", @ViewContext.RouteData.Values["controller"].ToString())",
        method: "POST",
        data: JSON.stringify(form_data),
        contentType: "application/json",
        success: function (result) {
            $.each(selected, function (index, value) {
                toastr.success("Deleted "+value.Name);
            });
            table.draw();
        },
        error: function (error) {
            console.log(error);
        }
    });
    return false;
});
当我记录正在发送的表单_数据时,我得到以下信息:

[{…}]
0: {Id: "a2306cd6-c260-40f0-a51e-f76142206d91", Name: "Application One", SecretKey: "mN9D626lqYqIJdlhI44482/XCSUuiz5IQBEezAmOHoA=", CreatedOn: "2018-10-01T00:19:39.1165394"}
length: 1
__proto__: Array(0)

我错过什么了吗?它过去在.NET MVC 5中工作。

在post action at parameters中,必须包括
[FromBody]
属性,如下所示:

[HttpPost]
public ActionResult Delete([FromBody] List<ApplicationsListViewModel> Input)
[HttpPost]
公共操作结果删除([FromBody]列表输入)

能否确认正在调用删除操作?我认为您的AJAX调用中的url可能有问题,我通常将其定义为/AppFolder/Contoller/delete。我可以确认是否调用了删除操作,因为我已经设置了调试器there@KirkLarkin这不是api post。请尝试传入包含数组的单视图模型,而不是相反,我相信这是惯例。你不应该使用[FromBody]
[HttpPost]
public ActionResult Delete([FromBody] List<ApplicationsListViewModel> Input)