AngularJS:传递参数

时间:2013-11-01 07:49:52

标签: angularjs

这是我的角度代码。

dataService.addFrameInventory($routeParams.id, $scope.newFrameInventory)
 .then(function() {
   },
   function() {
   });

这是我的工厂代码

    var _addFrameInventory = function (frameId, newFrameInventory) {

    var params = { frameId: frameId, newFrameInventory: newFrameInventory };
    $http.post("../api/v1/FrameInventory/post", params)
       .then(function (result) {
              //success
       },
           function () {
               //error
           });
     };

这是我的api控制器

public HttpResponseMessage Post([FromBody]FrameInventory frameInventory)
{
    _repository.Save(frameInventory);
    return Request.CreateResponse(HttpStatusCode.Created, frameInventory);
}

这是我的模特

public class FrameInventory
{
   Id {get; set;} //Identity column
   FrameId {get; set;}
   Supplier {get; set;}
   StockUnits {get; set;}
   StockReceivedDate {get; set;}
   StockUnits {get; set;}
   ...
}

这就是我在chrome中看到的。我在params中拥有所有价值观。 但是在'Post'方法中,我只能正确检索FrameId,其余的都是null。我确定参数传递本身有问题。因为我已经完成了单元测试,所以Post内部方法的功能没有任何问题。但我无法弄明白。

1 个答案:

答案 0 :(得分:0)

看起来你可能发布了错误类型的对象。

你发帖期待看到一个FrameInventory对象,其中包含FrameId和其他一些东西。看起来你正在处理包含对象的params

{ frameId: frameId, newFrameInventory: newFrameInventory }

完全按照您的变量名称,我希望

$http.post("../api/v1/FrameInventory/post", params)

应该阅读

$http.post("../api/v1/FrameInventory/post", newFrameInventory)

只要newFrameInventory具有您为FrameInventory定义的结构。