C# 将参数传递给控制器的HttpPost方法

C# 将参数传递给控制器的HttpPost方法,c#,asp.net-core-3.0,asp.net-mvc-controller,C#,Asp.net Core 3.0,Asp.net Mvc Controller,有一些非常基本的东西我一定是错过了,我不能理解它是什么。 我在控制器上有一个方法 [Route("SomeMethod")] [HttpPost] public IActionResult SomeMethod([FromBody]int interval) { ... } 当使用邮递员post请求{“interval”:2000}时,控制器上的间隔未初始化。如果我将方法参数更改为object,我会得到ValueKind=object:“

有一些非常基本的东西我一定是错过了,我不能理解它是什么。 我在控制器上有一个方法

    [Route("SomeMethod")]
    [HttpPost]
    public IActionResult SomeMethod([FromBody]int interval)
    {
        ...
    }
当使用邮递员post请求
{“interval”:2000}
时,控制器上的间隔未初始化。如果我将方法参数更改为object,我会得到
ValueKind=object:“{”interval:2000}”

我还尝试将参数设置为string,然后我发送的主体是
{“interval”:“2000”}
,在控制器上我得到null

基于这个问题,我试着:

[Route("SomeMethod")]
[HttpPost]
public IActionResult SomeMethod([FromBody]JsonElement interval)
{
    ...
}
并且在控制器上获得了
ValueKind=Undefined:“
,并且:

services.AddControllers()
        .AddNewtonsoftJson();
当该方法需要一个int并根据得到0时,您必须按原样在请求体中传递它,只传递一个值,而不传递属性名。但是绑定多个参数是不可能的。无论如何,我建议使用适当的对象来绑定身体参数

[Route("SomeMethod")]
[HttpPost]
public IActionResult SomeMethod([FromBody]Request request)
{
    return Ok();
}


public class Request
{
    public int Interval { get; set; }
}