具有MVC3视图模型和挖空模型的多个JSON参数

时间:2013-01-08 19:21:31

标签: asp.net-mvc json asp.net-mvc-3 knockout.js knockout-mvc

通过JSON将数据发送回我的MVC3控制器时遇到了一些麻烦。

我的最终目标是让我的控制器从视图中接收淘汰数据和当前模型。

我可以轻松找回可观察数组,并且可以轻松找回用于填充视图的原始模型。但我无法在浏览器中获得对模型的更新。

通常,提交会自动发回视图模型,我想我只需要调用该机制。

我的代码目前正确地获取了淘汰数组,但模型是“旧的”,它是用于从服务器填充视图的数据。

我真的在寻找如何在表单上启动机制,允许我通过JSON(或其他更好的方式)发回数据

编辑:数据线已更改。我现在得到了模型,但是项目数组的大小正确,但是空项目。看起来淘汰赛的映射并不是很有效。

Controller sig:

public ActionResult Save(
                           IEnumerable<ItemModel> eventlist,
                           ViewHeaderModel model)


     var vm = @Html.Raw(Json.Encode(Model));

        $.ajax({
            async: false,
            url: '/controller/schedule/save,
            data: $('#myForm').serialize()+"&" +$.param({'eventlist': ko.toJS(self.DraftKoModel.ScheduleItems)}),
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            traditional: true,
            success: function (result) {
              alert("HEEEEEEELP! I'm trapped!")
            } 
        });

1 个答案:

答案 0 :(得分:0)

刚测试为我的应用添加了一个快速测试页面。下面的代码应该有效:

$.ajax({
    url: '/controller/schedule/save',
    data: $("#myForm").serialize() + "&" + $.param({'eventlist' : ko.toJS(self.DraftKoModel.ScheduleItems}),
    type: "POST",
    dataType: "application/JSON",
    success: function (result) {
          alert("HEEEEEEELP! I'm trapped!")
        } 
});

Put this together using this blog post as a reference.

如果有帮助,请告诉我!