与关于以前 ASP.NET 版本的 这个老问题类似,我希望将 HTTP POST 的请求体绑定到一个字符串。当 ASP.NET 调用我的控制器方法时,这个方法似乎是绑定的,但是 value
是空的:
namespace Demo.Controllers
{
[Route("[controller]")]
public class WebApiDemoController : Controller
{
...
// POST api/values
[HttpPost]
public System.Net.Http.HttpResponseMessage Post([FromBody]string value)
{
// expected: value = json string, actual: json = null.
}
我还得去溪流里捞尸体吗?还是这样就行了?在测试上述方法时,我使用了以下 http 头:
Accept: Application/json
Content-Type: Application/json;charset=UTF-8
我在身体里传递以下信息: { "a": 1 }
我不想绑定到一个名为 a. 的字符串变量,我想绑定任何我得到的 JSON,然后我想使用 JSON 内容,任何任意的内容,从我的方法。
如果我理解了文档,那么 [FromBody]
属性应该已经做了我想做的事情,但是我猜测 ASP.NET 核心 MVC 绑定机制不会将 json 绑定到“字符串值”,但是也许我可以做一些其他的事情,让我获得同等水平的灵活性。
一个类似的问题 给你给我的想法,也许我应该写 [FromBody] dynamic data
而不是使用 [FromBody] string value
。
更新: 这里有.net 核心6和其他现代.net 核心版本的答案。