4

我无法将数据收集从淘汰赛发布到我的 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 方法?

4

1 回答 1

2

您不需要将您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-12-10T06:38:25.710 回答