我有一个asp-net核心应用程序。我的控制器看起来像这样:
[HttpPost]
public string Test(int x, int y)
{
return Request.Form["x"] + " - " + Request.Form["y"] + " | " + x + " - " + y;
}
但是当我尝试发布请求时,x和y总是0。当我把int改为例如string时,它会给我一个错误";字段x是必需的、字段y是必需的";,当我试着发帖的时候。奇怪的是Request。Form〔name〕给了我正确的值。
例如:此POST请求:
POST /api/user/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 9
x=123&y=5
给我这个结果:
123 - 5 | 0 - 0
可以使用Request.Form,但它只适用于int,正如我上面所说的,当我将其更改为字符串时,它会返回代码400,其中包含必填字段的消息。如何解决此问题?
将签名更新为如下所示,并让控制器知道应该从哪里获取这些值以进行绑定。
[HttpPost]
public string Test([FromForm] int x, [FromForm] int y)
{
return Request.Form["x"] + " - " + Request.Form["y"] + " | " + x + " - " + y;
}
我刚刚用int
和strings
确认了这一点。