我已经尝试了大约一天,并查看了多个问题和答案,仍然无法解决这个问题。
无论如何,我的name
值始终为null
或最终出现错误的请求错误400.如果有人能告诉我这里的错误,我真的很感激。
使用Javascript:
var myPerson = {};
myPerson.name = "Brandon";
function createObject() {
$.ajax({
contentType: "application/json;charset=utf-8",
dataType: 'json',
type: 'POST',
url: '/Person/CreatePerson',
data: JSON.stringify(myPerson),
success: function (response) {
alert(JSON.stringify(myPerson);
}, error: function (e) {
alert(e.responseText);
}
})
}
控制器:
[HttpPost]
public ActionResult CreatePerson(string name)
{
Person person = new Person();
person.Name = name;
_context.Person.Add(person);
_context.SaveChanges();
return Json(person);
}
答案 0 :(得分:1)
我一直在努力,因为我觉得这很奇怪。在ASP.NET Core 2.0中,您必须在操作中的参数之前添加[FromBody]
。 Here就是原因。
public ActionResult CreatePerson([FromBody] string name)
对于Person回复,您可能需要此
return Json(new {person = person});
在你的ajax中读取它:
var person = response.person
<强>更新强>
由于您要传递person对象,请执行以下操作
var myPerson = {
"Name" = "personName"
};
像这样传递
data: JSON.stringify(myPerson)
然后像这样把它送到控制器:
public ActionResult CreatePerson([FromBody] Person myPerson)