AngularJs中的自定义方法,带有帖子数据

时间:2015-07-29 02:49:45

标签: c# angularjs asp.net-web-api angular-resource

我的问题是这个。我的应用程序中有一个使用$ resource和web api中的控制器的服务。

这是我的角色服务

GarantiaService = function ($resource) 
{
     return $resource("../../api/garantia/:id", null,
     {
        'update': { method: 'PUT' },
        'renovar': { method: 'RENOVAR'}
     });
};

这是我的控制器

RenovarController = function ($scope, $routeParams, GarantiaService) {
    $scope.Garantia = { Id: 0 };

    $scope.ActualizarGarantia = function () {

        GarantiaService.renovar({ id: $scope.Garantia.Id }, $scope.Garantia, function () {
            //$location.path('#/');
        }, function () {
            alert("Error en la persistencia");
        });
    };
};

在web api中我创建了一个自定义方法

    [AcceptVerbs("RENOVAR")]
    public IHttpActionResult Renovar(int id, Garantia garantia)
    {


        return StatusCode(HttpStatusCode.NoContent);
    }

事情是我在c#中不断获得garantia null并且我没有以角度传递null对象。 这是我的服务或c#中的问题吗?

先谢谢你。

2 个答案:

答案 0 :(得分:0)

你应该这样调用这个方法:

GarantiaService.renovar({ id: $scope.Garantia.Id, garantia: $scope.Garantia, }, function () {
            //$location.path('#/');
        }, function () {
            alert("Error en la persistencia");
        });

答案 1 :(得分:0)

我解决了这个问题

jscontroller

RenovarController = function ($scope, $routeParams, GarantiaService) {
    $scope.Garantia = { Id: 0 };

    $scope.ActualizarGarantia = function () {

        GarantiaService.renovar({ garantia: $scope.Garantia }, function () {
            //$location.path('#/');
        }, function () {
            alert("Error en la persistencia");
        });
    };
};

web api:

[AcceptVerbs("RENOVAR")]
public IHttpActionResult Renovar(string garantia)
{
     Garantia deser = (Garantia)JsonConvert.DeserializeObject(garantia,typeof(Garantia));

     return StatusCode(HttpStatusCode.NoContent);
}