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



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

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

并且 im 与邮递员 post 请求{"interval": 2000 },控制器处的间隔未初始化。如果我将方法参数更改为对象,我会得到ValueKind = Object : "{"interval": 2000 }"

我也尝试了参数是字符串然后我发送的主体是{"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; }
}

相关内容

  • 没有找到相关文章

最新更新