使用AJAX将String传递给Controller

时间:2018-05-23 08:27:53

标签: c# jquery ajax razor asp.net-core-2.0

我已经尝试了大约一天,并查看了多个问题和答案,仍然无法解决这个问题。

无论如何,我的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);
    }

alert results

1 个答案:

答案 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)
相关问题