ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?

Posted 友迪 の 梦塔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?相关的知识,希望对你有一定的参考价值。

遇到一个常见错误,前端Post传递data: array: [1,2,3] ,但是API接收的一直是null

API 方法

postApi ([FromBody] int[] array, [FromUri] int num)

Debug过程

  1. F12检查数据传递结构,没有问题

  1. 尝试排除法,只保留[FormBody]。postApi ([FromBody] int[] array)
    还是不行。
  2. 根据网络查询,添加一个请求头。后台接收不再是null,变成了[]。但是数据还是不过来。
    然后就没办法了,反复尝试,人呆了。
headers: 
  \'Content-Type\': \'application/x-www-form-urlencoded\'
,
  1. 然后就和同事讨论,参考项目其他api,发现只要是[FormBody]都会建立一个类模型;然后就解决了
public class postParams

    public int[] array get; set; 

postApi ([FromBody] postParams params)
  int[] array = params.array;

总结反思

Post传递payload(请求载荷)格式其实是这种


  array: [1,2,3]

postApi ([FromBody] int[] array) 接收的格式是这种,这种格式其实是错误格式,所以不管怎么传都接收不到参数。所以需要创建一个类模型,才会包含

array: [1,2,3]

asp.net core webapi Post接收不到ajax请求数据

用的是core2.2 

内容摘自 https://bbs.csdn.net/topics/392708657

在core里面
FromBody对应的是application/json或xml这种格式
FromForm对应的www-for或者form-data这种格式

apiController这个貌似是2.1开始才有的
不加ApiController的话,默认是FromForm,加了默认是FromBody

如果加了ApiController的话post方法的参数需要加上FromForm

[HttpPost("[action]")]
public IActionResult Login([FromForm]string user,[FromForm]string pwd)
        

问题结局

 

以上是关于ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

如何将简单值从 axios.post 发送到 asp.net 核心?

如何从axios.post发送简单的值到asp.net核心?

ASP.NET Core MVC 混合路由/FromBody 模型绑定和验证

asp.net core 3.0 web api request.body和[frombody]冲突[关闭]

ASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数

ASP.NET Core WebAPI FromBody 属性未验证对象非引用字段