在AngularJs中使用post数据的自定义方法

本文关键字:数据 自定义方法 post AngularJs | 更新日期: 2023-09-27 18:05:10

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

这是我在angular中的服务

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#中一直得到null而我没有在angular中传递null对象。这是我的服务还是c#的问题?

提前谢谢。

在AngularJs中使用post数据的自定义方法

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

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

我是这样解决的

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);
}