Передача строки в контроллер с использованием AJAX - PullRequest
0 голосов
/ 23 мая 2018

Я пробовал это уже около дня и просмотрел несколько вопросов и ответов, но все еще не могу решить эту проблему.

Независимо от этого, мое значение 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);
    }

результаты оповещений

1 Ответ

0 голосов
/ 23 мая 2018

Я тоже боролся с этим, потому что думал, что это очень странно.В ASP.NET Core 2.0 вы должны добавить [FromBody] перед вашими параметрами в вашем действии. Здесь - вот почему.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...