将值从角度传递到webapi put方法

时间:2016-06-04 01:04:26

标签: javascript asp.net angularjs asp.net-web-api

我正在尝试将id值从角度代码传递到asp.net web api。我尝试了几种方法,但仍然无法传递价值。可能是代码问题?

角度服务代码

angular.module('myServiceApp')
.factory('mySvc', ['$http', function ($http) {
    return {
        startJob: function (id) {
            return $http.put('/api/Job/Put/' + id);
        }
    };
}]);

HTML代码

<div ng-click="initiateJob(id)">
Start Now
</div>

角度函数

$scope.initiateJob = function (id) {
    mySvc.startJob(id)
         .success(function () {
             alert('started successfully');
         }).error(function (err) {
             $scope.error = err;                
         });
}

webapi代码

public HttpResponseMessage Put(int id)
{
    HttpResponseMessage response = null;           
    return response;
}

1 个答案:

答案 0 :(得分:3)

尝试更改此行:

return $http.put('/api/Job/Put/' + id);

进入这个:

return $http.put('/api/Job/' + id);

我这样做就在我这边,它运作得很好,这是一个完整的例子:

WEB API控制器:

public class JobController : ApiController
{
    public HttpResponseMessage Put(int id)
    {
        HttpResponseMessage response = null;
        return response;
    }
}

查看:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js' type="text/javascript"></script>
<script type="text/javascript">
    angular.module('app', []);

    angular.module("app").controller('mainController', function ($scope, $http, $compile) {

        $scope.CallPut = function () {

            debugger

            var id = 1;

            $http.put("/api/Job/" + id).
            success(function (data, status, headers, config) {
                debugger;
            }).
            error(function (data, status, headers, config) {
                debugger;

            });
        }
    });

</script>

<div ng-app="app">
    <div id="mainController" ng-controller="mainController">
        <input type="button" ng-click="CallPut()" value="Call Put" />
    </div>
</div>

还要确保在项目的App_Start文件夹中有一个名为WebApiConfig.cs的文件,您可以在其中定义Web api路由,并确保在全球范围内注册之前的MVC路由 .asax文件:

protected void Application_Start()
{
    GlobalConfiguration.Configure(WebApiConfig.Register);
    AreaRegistration.RegisterAllAreas();
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}