Web Api HTTPPost不接受int

问题描述 投票:7回答:2

我试图只是传入body一个int它不起作用为什么我需要创建一个类型为int的属性的类? (然后它的工作原理)

作品

[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
}
c# asp.net-web-api asp.net-web-api2 postman asp.net-web-api-routing
2个回答
16
投票

1.你的[HttpPost]期望一个int但是从你传递一个json对象的body。你应该像下面一样传递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


2
投票

设置FromBody属性。

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

有关详细信息Link

[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified([FromBody] int mainId)
    {  ....}
© www.soinside.com 2019 - 2024. All rights reserved.