Web Api HTTPPost不接受int

时间:2017-03-16 19:05:38

标签: c# asp.net-web-api asp.net-web-api2 postman asp.net-web-api-routing

我试图传递body一个int但它不起作用 为什么我需要创建一个类型为int的属性的类? (然后它起作用)

WORKS

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified(DataAccess.Entities.RequestMain mainValues)
    {  ....}

不要工作

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified(int mainId)
    {  ....}

使用邮递员进行测试

http://localhost:13497/api/UpdateMainReversed

身体

{
   "mainId" : 1615
}

2 个答案:

答案 0 :(得分:14)

1.你的[HttpPost]需要一个int,但是你正在传递一个json对象。你应该像下面一样传递json字符串。无需提及参数名称

enter image description here

2.您应该使用[FromBody],如下所示

[HttpPost]
    public void UpdateMainVerified([FromBody] int mainid)
    {

    }

这个链接很好地解释了

https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

答案 1 :(得分:1)

设置FromBody属性。

  

要强制Web API从请求正文中读取简单类型,请将[FromBody]属性添加到参数中。

详细信息Link

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified([FromBody] int mainId)
    {  ....}