邮递员插件将值[FromBody]传递给发布方法时的空值[重复]
Posted
技术标签:
【中文标题】邮递员插件将值[FromBody]传递给发布方法时的空值[重复]【英文标题】:Null value when Pass values [FromBody] to post method by Postman plugin [duplicate] 【发布时间】:2017-09-27 23:13:42 【问题描述】:我在 ASP.net Web API 中使用 api 控制器,我需要通过 [FromBody] 类型将值传递给 post 方法..
[HttpPost]
public HttpResponseMessage Post( [FromBody]string name)
....
我使用 Postman 插件,但是当发送到 name 的 post 方法值始终为 null.. 遵循此图像:
在 Post 方法中:
为什么会这样?!
【问题讨论】:
将控制器操作上的 [FromBody] 属性更改为 [FromForm] 更改为 FromForm 让程序运行,但它没有传输数据。 【参考方案1】:使用原始json发布字符串,不要忘记双引号。
【讨论】:
哦,伙计....这是迄今为止我找到的最有效的答案 这是这个问题的最佳答案。它奏效了。【参考方案2】:您不能使用 json 和 FromBody 绑定单个原始字符串,json 将传输一个对象,而控制器将依次期望一个复杂对象(模型)。如果您只想发送单个字符串,请使用 url 编码。
在您的标题集上
Content-Type: application/x-www-form-urlencoded
POST 请求消息正文的正文应为=saeed
(基于您的测试值),仅此而已。对于未知/变量字符串,您必须对值进行 URL 编码,这样您就不会意外地因输入字符而转义。
备用 1
创建一个模型并使用它。
消息正文值:"name":"saeee"
c#
public class CustomModel
public string Name get;set;
控制器方法
public HttpResponseMessage Post([FromBody]CustomModel model)
备用 2
使用 URI 而不是消息正文将原始字符串传递给您的帖子。
【讨论】:
谢谢 ;) 备用 1 工作 我使用了 Postman 的替代品 Insomnia,在这里我选择了“Form URL Encoded”,它给出了指定的内容类型,但我给参数指定了 c# 参数的名称,但它没有工作,相反我只需要插入值而不是名称,这样请求就变成了 =value 而不是 param=value以上是关于邮递员插件将值[FromBody]传递给发布方法时的空值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
layuiajax传递对象参数,后台使用FromBody接收对象参数
layuiajax传递对象参数,后台使用FromBody接收对象参数