这个问题在这里已有答案:
我在ASP.net web API中使用api控制器,我需要通过[FromBody]类型将值传递给post方法 .
[HttpPost] public HttpResponseMessage Post( [FromBody]string name) { .... }
我使用 Postman 插件,但发送到post方法的值 name 始终是 null ..请按照下图:
并在Post方法中:
为什么会这样?!
你不能使用json和FromBody绑定单个原始字符串,json将传输一个对象,控制器将依次期望一个复杂的对象(模型) . 如果您只想发送单个字符串,请使用url编码 .
在 Headers 集上
Content-Type: application/x-www-form-urlencoded
POST请求消息正文的正文应该是 =saeed (基于您的测试值)而不是其他内容 . 对于未知/变量字符串,您必须对值进行URL编码,以便您不会意外地使用输入字符进行转义 .
=saeed
创建一个模型并使用它 .
邮件正文值: {"name":"saeee"}
{"name":"saeee"}
C#
public class CustomModel { public string Name {get;set;} }
控制器方法
public HttpResponseMessage Post([FromBody]CustomModel model)
使用URI而不是邮件正文将原始字符串传递给您的帖子 .
使用原始json发布字符串,不要忘记双引号 .
2 回答
你不能使用json和FromBody绑定单个原始字符串,json将传输一个对象,控制器将依次期望一个复杂的对象(模型) . 如果您只想发送单个字符串,请使用url编码 .
在 Headers 集上
POST请求消息正文的正文应该是
=saeed
(基于您的测试值)而不是其他内容 . 对于未知/变量字符串,您必须对值进行URL编码,以便您不会意外地使用输入字符进行转义 .替代1
创建一个模型并使用它 .
邮件正文值:
{"name":"saeee"}
C#
控制器方法
备选2
使用URI而不是邮件正文将原始字符串传递给您的帖子 .
使用原始json发布字符串,不要忘记双引号 .