【问题标题】:I am not able to post data collection from knockout to my webapi service我无法将数据收集从淘汰赛发布到我的 webapi 服务
【发布时间】:2012-11-27 09:09:01
【问题描述】:

我无法将来自淘汰赛的数据收集发布到我的 webapi 服务。

我的淘汰码:

 $.ajax("/api/tasks/PostTask", {
                    data: ko.toJSON({ tasks: self.tasks }),
                    type: "post", contentType: "application/json",
                    success: function (result) { alert(result) }
                });
            };

如果我把 ko.toJSON({ tasks: self.tasks }) 的输出放到一个 div 标签中,结果是:

{"tasks":[{"title":"task# 0","isDone":false},{"title":"task#1","isDone":false},{"title": "task#2","isDone":false},{"title":"task#3","isDone":false},{"title":"task#4","isDone":false},{ "title":"task# 5","isDone":false}]}

所以,我正在发送数据。

我的 webapi 方法:

 public void PostTaskCollection(List<Task> tasks)
    {

        foreach (Task item in tasks)
        {
            string _title = item.title;
        }

    }

当我在其中设置断点时,我看到任务变量为空。我究竟做错了什么?为什么集合没有传递给我的 webapi 方法?

【问题讨论】:

    标签: jquery knockout.js asp.net-web-api


    【解决方案1】:

    您不需要将self.tasks 包装在新对象中,否则Web.Api 将因为"tasks" 前缀而无法正确绑定。所以就写ko.toJSON(self.tasks)

    所以这个调用应该有效:

    $.ajax("/api/tasks/PostTask", {
            data: ko.toJSON(self.tasks),
            type: "post",
            contentType: "application/json",
            success: function (result) { alert(result); }
        });
    

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 2014-04-26
      • 1970-01-01
      • 2013-04-10
      • 1970-01-01
      相关资源
      最近更新 更多