通过Postman插件将值[FromBody]传递给post方法时的空值

Sae*_*sal 39 c# asp.net-web-api postman

我在ASP.net web API中使用api控制器,我需要通过[FromBody]类型将值传递给post方法.

 [HttpPost]
 public HttpResponseMessage Post( [FromBody]string name)
 {
     ....
 }
Run Code Online (Sandbox Code Playgroud)

我使用Postman插件但是当发送到post方法时,name的值总是为null ..请按照下图: 在此输入图像描述

在Post方法中: 在此输入图像描述

为什么会这样?!

Fei*_*hou 44

使用原始json发布字符串,不要忘记双引号.

在此输入图像描述

  • 哦,伙计......这是我迄今为止找到的最有效的答案 (4认同)

Igo*_*gor 37

你不能使用json和FromBody绑定单个原始字符串,json将传输一个对象,控制器将依次期望一个复杂的对象(模型).如果您只想发送单个字符串,请使用url编码.

在标题集上

Content-Type: application/x-www-form-urlencoded
Run Code Online (Sandbox Code Playgroud)

POST请求消息正文的主体应该是=saeed(基于您的测试值)而不是其他内容.对于未知/变量字符串,您必须对值进行URL编码,以便您不会意外地使用输入字符进行转义.


替代1

创建一个模型并使用它.

消息正文值: {"name":"saeee"}

C#

public class CustomModel {
    public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

控制器方法

public HttpResponseMessage Post([FromBody]CustomModel model)
Run Code Online (Sandbox Code Playgroud)

替代2

使用URI而不是邮件正文将原始字符串传递给您的帖子.

  • 谢谢;)替代1工作 (2认同)