Как передать сложные параметры вида ключ-значение в контроллер в MVC? - PullRequest
0 голосов
/ 16 января 2019

У меня проблема с ajax при отправке сложных пар ключ-значение из представления в контроллер. Я написал свои запросы Ajax. За исключением «currentStateDatas», все остальные переменные правильно передаются в контроллер. Но currentStateDatas выходит из поля зрения. Контроллер ожидает "string" для "currentStateDatas", потому что мне нужен тип строки для него. Я не мог разобраться в проблеме. Не могли бы вы мне помочь ? Кстати, currentStateDatas содержит json. У него слишком много вложенных пар ключ-значение.

currentStateDatas = {};
//some values are taken from forms.
$.ajax({
        url: "@Url.Action("SaveTempReport", "Report")",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ "categoryIds": categoryIds, "reportName": reportName, "Description": description, "tempReportId": tempReportId, "chartState": currentStateDatas, "deparmentIds": deparmentIds}),
        success: function (response) {

        }
    });

1 Ответ

0 голосов
/ 16 января 2019

Ваш контроллер ожидает currentStateDatas как string, но в вашем js-коде это объект, вы также должны преобразовать currentStateDatas в строку, используя JSON.stringify.

$.ajax({
        url: "@Url.Action("SaveTempReport", "Report")",
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ "categoryIds": categoryIds, 
                               "reportName": reportName, 
                               "Description": description, 
                               "tempReportId": tempReportId, 
                               "chartState": JSON.stringify(currentStateDatas), 
                               "deparmentIds": deparmentIds}),
        success: function (response) {
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...