【问题标题】:Multiple JSON parameters with MVC3 view model and knockout model具有 MVC3 视图模型和淘汰模型的多个 JSON 参数
【发布时间】:2012-12-22 17:58:01
【问题描述】:

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

我的最终目标是让我的控制器同时接收来自敲除的数据和来自视图的当前模型。

我可以轻松取回 observable 数组,也可以轻松取回用于填充视图的原始模型。但我无法在浏览器中获取对模型所做的更新。

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

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

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

编辑:数据行已更改。我现在取回模型,但项目数组的大小正确但有空项目。看起来淘汰赛映射不太有效。

控制器信号:

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!")
            } 
        });

【问题讨论】:

  • 您可以发布您将数据发布到的控制器操作吗?我想看看你在控制器上期望的模型
  • 上面的编辑回答你。希望你能帮忙。我是如此接近,我可以品尝它!

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


【解决方案1】:

刚刚测试为我的应用添加了一个快速测试页面。下面的代码应该可以工作:

$.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.

如果有帮助,请告诉我!

【讨论】:

  • 当我这样做时,模型为空......所以有些事情正在发生,但我猜不是正在处理的事情:|
  • 更新了答案。您可能还需要使用 JSON.stringify(),所以请随意更换我的 $.param。让我知道现在是否有效。
  • 我现在正在玩这个。我还注意到,如果我删除了“数据类型:”应用程序/JSON”,但仅适用于模型,我之前的代码就可以工作。所以就像一个字符串格式正确,而另一个字符串格式不正确。
  • 数据:$('#myForm').serialize()+"&" +$.param({'eventlist': ko.toJS(self.DraftKoModel.ScheduleItems)}),似乎已经非常接近我需要的东西了。我现在得到带有更新数据(YAY)的模型和一个包含 99 个项目的淘汰赛列表,这是正确的......但所有列表项目都是空的......关于最后一个小错误的任何想法?
  • 你试过这样吗? $('#myForm').serialize() + "&" + JSON.stringify(({'eventlist': ko.toJS(self.DraftKoModel.ScheduleItems)})
猜你喜欢
  • 2012-11-29
  • 2016-01-27
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2012-01-18
  • 2017-06-10
  • 2013-02-19
  • 1970-01-01
相关资源
最近更新 更多