Knockout.js 将请求放在带有集合的WebApi上

Knockout.js 将请求放在带有集合的WebApi上,knockout.js,asp.net-web-api,Knockout.js,Asp.net Web Api,我在一个ASP.NETMVC5项目中工作,其中包含WebApi和Knockout.js,我试图在保存到页面上时替换集合。首先,对于在我的WebApiController中工作的简单内容,请更新一项: public IHttpActionResult Put(FooObject obj, CancellationToken cancellationToken) { // obj is of type FooObject and has the goods I need ... } 但是,

我在一个ASP.NETMVC5项目中工作,其中包含WebApi和Knockout.js,我试图在保存到页面上时替换集合。首先,对于在我的WebApiController中工作的简单内容,请更新一项:

public IHttpActionResult Put(FooObject obj, CancellationToken cancellationToken) {
  // obj is of type FooObject and has the goods I need
  ...
}
但是,这不起作用:

public IHttpActionResult Put(IEnumerable<FooObject> listOfObj, CancellationToken cancellationToken) {
  // nope; listOfObj is empty, including trying List<> instead of IEnumerable<>
  ...
}

我的直觉是我缺少了一些基本的WebApi东西,但我不确定那是什么。有什么想法吗?

我想您必须用frombody属性标记集合参数

public IHttpActionResult Put([FromBody]IEnumerable<FooObject> listOfObj, CancellationToken cancellationToken) {
  // nope; listOfObj is empty, including trying List<> instead of IEnumerable<>
  ...
}

您要发送的数据中有什么,是对象还是数组?正如Gabe所建议的,尝试一个包含ObjectsHanks数组的对象。我尝试了“[FromBody],但没有做AJAX更改部分。我将尝试一下。实际上不需要[FromBody]属性,但ajax修改工作正常。谢谢
public IHttpActionResult Put([FromBody]IEnumerable<FooObject> listOfObj, CancellationToken cancellationToken) {
  // nope; listOfObj is empty, including trying List<> instead of IEnumerable<>
  ...
}
draggable_service.prototype.update = function (data) {
   var self = this;
   return $.ajax({
      data: {'': data},
      type: "PUT",
      url: self.url
   });
};