【问题标题】:ASP.NET Core 2.1 passing json list to ajaxASP.NET Core 2.1 将 json 列表传递给 ajax
【发布时间】:2018-09-30 15:40:17
【问题描述】:

我有这个控制器,它采用 ApplicationsListViewModel 类型的列表。但是,即使我在控制台中检查过,我的 ajax 函数似乎也没有发送任何内容。

控制器

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

视图模型

public class ApplicationsListViewModel
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string SecretKey { get; set; }
    [DataType(DataType.DateTime)]
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd HH:ii:ss}", ApplyFormatInEditMode = true)]
    public DateTime CreatedOn { get; set; }
}

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;
});

当我记录正在发送的 form_data 时,我得到了这个:

[{…}]
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 中工作。

【问题讨论】:

  • 您能否确认删除操作正在被调用?我认为您的 AJAX 调用中的 url 可能有问题,我通常将其定义为 /AppFolder/Contoller/Delete
  • 我可以确认调用了删除操作,因为我在那里设置了一个调试器
  • @KirkLarkin 它不是一个 api 帖子。
  • 尝试传入包含数组的单个视图模型,而不是反之亦然,我相信这是惯例。你不应该使用 [FromBody]

标签: c# asp.net asp.net-mvc asp.net-core


【解决方案1】:

在参数的后期操作中,您必须像这样包含[FromBody] 属性:

[HttpPost]
public ActionResult Delete([FromBody] List<ApplicationsListViewModel> Input)

【讨论】:

    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2020-08-23
    • 2019-03-09
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多