如何将复杂的键值参数表单视图传递给MVC中的控制器?

时间:2019-01-16 10:47:23

标签: c# jquery json asp.net-mvc asp.net-ajax

我在将复杂的键/值对从视图发送到控制器时遇到了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) {

        }
    });

1 个答案:

答案 0 :(得分:2)

您的控制器等待currentStateDatas作为string,但是在您的js代码中,它是一个对象,您还应该使用JSON.stringify将currentStateDatas转换为字符串。

$.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) {
        }
    });