【问题标题】:Pass parameters to HttpPost method of controller将参数传递给控制器​​的 HttpPost 方法
【发布时间】:2020-05-19 10:02:25
【问题描述】:

我必须缺少一些非常基本的东西,但我无法理解它是什么。 我在控制器上有一个方法

    [Route("SomeMethod")]
    [HttpPost]
    public IActionResult SomeMethod([FromBody]int interval)
    {
        ...
    }

我正在使用邮递员发布请求{"interval": 2000 },控制器的间隔未初始化。如果我将方法参数更改为对象,我会得到ValueKind = Object : "{"interval": 2000 }"

我也尝试将参数设置为字符串,然后我发送的正文是{"interval": "2000" },在控制器上我得到空

基于这个问题我试过了:

[Route("SomeMethod")]
[HttpPost]
public IActionResult SomeMethod([FromBody]JsonElement interval)
{
    ...
}

在控制器上得到ValueKind = Undefined : "",还有:

services.AddControllers()
        .AddNewtonsoftJson();

当方法需要一个 int 并得到 0 时

【问题讨论】:

    标签: c# asp.net-core-3.0 asp.net-mvc-controller


    【解决方案1】:

    根据documentation,您必须按原样在请求正文中传递它,只是一个值,没有属性名称。但是它不可能绑定一个以上的参数。无论如何,我会建议使用适当的对象来绑定身体参数。

    [Route("SomeMethod")]
    [HttpPost]
    public IActionResult SomeMethod([FromBody]Request request)
    {
        return Ok();
    }
    
    
    public class Request
    {
        public int Interval { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多