我正在尝试将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;
}
答案 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);
}