[英]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.