Как получить данные JSON в контроллере в ASP.net Core? - PullRequest
0 голосов
/ 24 декабря 2018

Мне нужно получить данные, отправленные с помощью JSON, и сохранить их в модели в контроллере asp.net.

  //JSON data
        var dataType = 'application/json';
        var data = {
            ID: 'Zaki',                
        }

        console.log('Submitting form...');
        console.log(data);
        $.ajax({
            type: 'POST',
            url: 'Save',
            dataType: 'json',
            contentType: dataType,
            data: data,
            success: function (result) {
                console.log('Data received: ');
                console.log(result);
            }
        });

Контроллер

 [HttpPost]
    public ActionResult Save([FromBody] string ID)
    {

        return Json (ID);


    }

Я получаю нулевое значение в консоли, оно должно быть zakiи оттуда я хочу написать код сохранения ...

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Я знаю, что это уже помечено как ответ, но есть еще один способ сделать это:

Я не использую обязательный атрибут FromBody.

Контроллер

    public class JsonRequest
    {
        public string Id { get; set; }
    }

    [HttpPost]
    public ActionResult Save(JsonRequest data)
    {

        return Json(data.Id);
    }

Вместо использования dataType Я использую accept , и вам не нужно преобразовывать свой JSON в строку.

Чтобы избежать проблем с относительными путями, яиспользуя также: url: '@ Url.Action ("Сохранить", "Домой") ".

Javascript

function send()
{
    //JSON data
    var dataType = 'application/json';
    var data = {
        "id": "Zaki"
    }

    console.log('Submitting form...');
    console.log(data);
    $.ajax({
        type: 'POST',
        url: '@Url.Action("Save", "Home")',                        
        accept: dataType,
        data: data,
        success: function (result) {
            console.log('Data received: ');
            console.log(result);
        }
    });
}

Удачи в вашем проекте.

0 голосов
/ 24 декабря 2018

Измените эту строку в своем коде. data: data, to

data: JSON.stringify (data)

При отправке данных ввеб-сервер, данные должны быть строкой, а метод JSON.stringify преобразует объект JavaScript в строку.

Другой подход, вместо получения необработанного строкового значения, заключает в себе ваш параметр в объект класса, напримерthis

public class ParamObj
{
public string ID{get;set;}
}

и в вашем контроллере получите параметр этого типа объекта, подобный этому ..

public ActionResult Save([FromBody] ParamObj data)

Thanx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...