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过程
- F12检查数据传递结构,没有问题
- 尝试排除法,只保留[FormBody]。
postApi ([FromBody] int[] array)
还是不行。 - 根据网络查询,添加一个请求头。后台接收不再是
null
,变成了[]
。但是数据还是不过来。
然后就没办法了,反复尝试,人呆了。
headers:
\'Content-Type\': \'application/x-www-form-urlencoded\'
,
- 然后就和同事讨论,参考项目其他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]冲突[关闭]