从视图向控制器发送复杂的键值对时,ajax出现问题。我写了我的ajax查询。除“ currentStateDatas”外,所有其他变量均正确传递给控制器​​。但是,从视图来看,currentStateDatas为空。控制器为“ 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) {

        }
    });

最佳答案

您的控制器等待currentStateDatas作为string,但是在您的js代码中,它是一个对象,您还应该使用currentStateDatasJSON.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) {
        }
    });

关于c# - 如何将复杂的键值参数表单 View 传递给MVC中的 Controller ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54215383/

10-10 21:32