我无法将数据收集从knockout发布到我的web api服务

时间:2012-12-09 22:51:32

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

我无法将数据收集从淘汰赛发布到我的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”:“任务#5”,“isDone”:false}]}

所以,我发送数据。

我的webapi方法:

 public void PostTaskCollection(List<Task> tasks)
    {

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

    }

当我输入断点时,我看到tasks变量为null。我究竟做错了什么?为什么集合没有传递给我的webapi方法?

1 个答案:

答案 0 :(得分:2)

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

所以这个电话应该有效:

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