将JSON数据从View传递给Controller为空

时间:2014-05-22 18:00:36

标签: javascript ajax asp.net-mvc

我要做的是让用户能够添加新的/删除JQuery选项卡,其中包含某些模型数据,然后将其保存到数据库中。我正在尝试进行ajax调用以将JSON数据传递给控制器​​,但是当我跟踪它时,数据将为空。

enter image description here

查看:

// gloabal variables
            var tabs;
.
.
.

 tabs = $("#tabs").tabs();
.
.
.
   // save tabs to database
            function SaveTabs() {
                var d1 = ko.toJSON(this);
                var associativeArray = { tabs: d1 };
                $.ajax({
                    url: "@Url.Action("SaveTabs")",
                    data: associativeArray,
                dataType: "json",
                type: "POST",
                traditional: true,
                contentType: "application/json; charset=utf-8",              

            });
            };

控制器:

public ActionResult SaveTabs(Survey survey, List<TabViewModel> tabs)
        {
             //TODO: save to DB

            //Need to finish it so that we can return real values.
            return Json(tabs);
        }

d1变量不是调查,我还没有办法进行调查,我只是想确保我可以先将数据传递给控制器​​。所以我假设我需要在控制器的SaveTabs方法中有一个包含制表符和调查的字典。

2 个答案:

答案 0 :(得分:1)

根据supercool&amp; amp;的评论Brian,您需要更新ajax调用以添加JSON.stringify,如:

        $.ajax({
                url: "@Url.Action("SaveTabs")",
                data: JSON.stringify(associativeArray),
            dataType: "json",
            type: "POST",
            traditional: true,
            contentType: "application/json; charset=utf-8",              

        });

答案 1 :(得分:0)

尝试这样做:

data: associativeArray.serialize()