首页 > 解决方案 > 当它以查询字符串格式出现时,如何将发布的数据绑定为 x-www-form-urlencoded?

问题描述

我有一个响应 POST 请求并接受数据作为 application/x-www-form-urlencoded 的 ASP.NET Core 控制器

[HttpPost]
[Consumes("application/x-www-form-urlencoded")]
public async Task<IActionResult> RegisterPayment([FromForm]PaymentDetails data)
{
//registerpayment
}

通过使用 Postman,当我使用此正文发布 x-www-form-urlencoded 时:

orderid:2552
amount:100

它可以工作,并且数据参数已正确绑定。

但是,如果我使用这样的查询字符串格式发布它

orderid=2552&amount=100

它不绑定,数据中的所有字段都为空。

我希望数据能够正确绑定,即使使用查询字符串格式,毕竟是 urlencoded。

标签: c#asp.net-core

解决方案


与 GET 请求不同,POST 请求不打算包含查询字符串。通常,将所有参数放在 GET 的查询字符串中,将所有参数放在 POST 的正文中。

您选择的框架可能会忽略 POST 请求的查询字符串。

要进行更深入的讨论,建议您检查一下这个这个


推荐阅读