繁体   English   中英

ASP.NET Core http post [FromBody] 在 3.1 中损坏,在 2.2 中使用

[英]ASP.NET Core http post [FromBody] broken in 3.1, used to work in 2.2

我在从 ASP.NET Core 2.2 迁移到 3.1 时遇到了各种错误。

我的最新错误是我通过 Http Post 接收的对象为空。

这是接收对象的代码,在这种情况下模型为空。

[HttpPost]
public async Task<IActionResult> MyAction([FromBody] BoardMoveModel model)

模型类:

public class BoardMoveModel
{
    public int BoardId { get; set; }
    public int TicketId { get; set; }
    public int DestinationStatusId { get; set; }
    public int SourceStatusId { get; set; }
    public IEnumerable<int> SourceStatusList {get; set;}
    public IEnumerable<int> DestinationStatusList {get; set;}
}

和 Javascript 代码:

        var data = {
            TicketId: el.id,
            DestinationStatusId: targetStatusId,
            SourceStatusId: sourceStatusId,
            SourceStatusList: sourceList,
            DestinationStatusList: destList
        };

        $.ajax({
            async: true,
            url: "/Area/Board/MyAction",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            headers: {
                RequestVerificationToken:
                $('input:hidden[name="__RequestVerificationToken"]').val()
            },
            data: JSON.stringify(data)
        }).done(function(result) {

这是实际的 JSON 有效负载:

             {
                 "TicketId":"150",
                 "DestinationStatusId":"5",
                 "SourceStatusId":"6",
                 "SourceStatusList":[],
                 "DestinationStatusList":["140","150"]
             }

模型为空,因为它对绑定无效。 在 JSON 中,您传入字符串值,而模型需要整数。 更改为匹配,它应该可以工作。 默认情况下,绑定区分大小写,但您提供的代码应该不会有问题。

尝试将其作为应用程序/json正文发送

{
    "TicketId":150,
    "DestinationStatusId":5,
    "SourceStatusId":6,
    "SourceStatusList":[],
    "DestinationStatusList":[140,150]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM