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