我正在尝试在 Visual Studio 2015 预览版中将 json 对象发布到 MVC。但是,数据似乎没有绑定(bind)到操作方法参数。在以前版本的 MVC 中曾经注册过一个 JsonValueProviderFactory 来处理这个问题,但我似乎在 MVC6 中找不到它?设置是否发生了变化,这在以前的版本中是开箱即用的吗?
基本上我有一个 Controller 方法
public ActionResult Save(Person person)
{
...
}
我试图从javascript调用:
var personData = { Name : 'John Doe' };
$.ajax({
url: '@Url.Content("~/Person/Save")',
type: "POST",
data: JSON.stringify(personData ),
dataType: "json",
contentType: "application/json; charset=utf-8"
})
在之前的MVC版本中,json对象映射到c#参数,
例如看这篇文章http://webcognoscere.com/post/How-to-POST-a-JSON-object-to-a-Controller-Action.aspx
最佳答案
添加 [FromBody]
到参数。在 MVC 6 中,来自 MVC 和 Web API 的逻辑被合并到一个系统中。这意味着需要从帖子正文中反序列化为 JSON 的内容需要在 action 方法的参数中明确指出:
public ActionResult Save([FromBody] Person person)
{
...
}
关于asp.net-core - 如何在 MVC Visual Studio 2015 中发布 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27151486/