更新web api没有收到参数?

时间:2018-01-24 09:43:59

标签: c# asp.net-web-api asp.net-core

我试图在Postman上调用更新web api,但似乎它没有将id param传递给asp.net核心控制器(asp.net core 2.0)

public class ShoppingCartController : BaseController
{ 
    [HttpPut("{id}")]
    [Route("api/ShoppingCart/UpdateShoppingCartItem")]
    public IActionResult UpdateShoppingCartItem(long id)
    {

        return new NoContentResult();
    }
 }

enter image description here

4 个答案:

答案 0 :(得分:2)

您必须使用[FromBody]

[HttpPut("{id}")]
[Route("api/ShoppingCart/UpdateShoppingCartItem")]
public IActionResult UpdateShoppingCartItem([FromBody]long id)
{
    return new NoContentResult();
}

在Postman中你必须使用一个简单的数字 替换:

{
    "id":87908908
}

87908908

答案 1 :(得分:1)

param解析的默认行为:来自Url。 在方法参数之前使用self.fc1让asp从Body中解析这个参数。

答案 2 :(得分:0)

您可以尝试将方法UpdateShoppingCartItem更改为以下内容:

public class Person
{
    [Key]
    public string Id { get; set; }
    public string Firstname{ get; set; }
    public string Lastname { get; set; }
}

答案 3 :(得分:0)

HttpPut现在接受路线作为参数,因此您可以组合您的属性。

public class ShoppingCartController : BaseController
{
    [HttpPut("api/ShoppingCart/UpdateShoppingCartItem")]
    public IActionResult UpdateShoppingCartItem(long id)
    {

        return new NoContentResult();
    }
 }

模型绑定器应该从身体推断出id的值。

使用[HttpPut("{id}")]意味着对localhost:44342/65465的置位请求将是有效的操作。