I am trying to just pass in body a int and it does not work
Why do I need to create a class with a property of type int ?   (then it works)
WORKS
[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified(DataAccess.Entities.RequestMain mainValues)
    {  ....}
DO NOT WORK
[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified(int mainId)
    {  ....}
Testing with Postman
http://localhost:13497/api/UpdateMainReversed
Body
{
   "mainId" : 1615
}
1.Your [HttpPost] expects a int but from body you are passing a json object. you should pass json string like below. No need to mention parameter name
2.you should use [FromBody] as below
[HttpPost]
    public void UpdateMainVerified([FromBody] int mainid)
    {
    }
this link explains it well
Muhammad Saqlain
Set FromBody Attribute. 
To force Web API to read a simple type from the request body, add the
[FromBody]attribute to the parameter.
For details Link
[HttpPost]
[Route("api/UpdateMainReversed")]
public IHttpActionResult UpdateMainVerified([FromBody] int mainId)
    {  ....}
来源:https://stackoverflow.com/questions/42842805/web-api-httppost-not-accepting-int
