Web Api 2 - 如何将$ http调用中的属性发送到控制器(属性路由)

时间:2014-07-24 14:03:33

标签: c# javascript angularjs url-routing asp.net-web-api2

我有这个$ http电话:

$http({
        method: 'GET',
        url: '/api/PhotoSubmit/GetCategories',
        accept: 'application/json'
    })
        .success(function (result) {
            $scope.categories = result;
        });

...需要将参数发送到此HTTPGET方法:

[Route("api/PhotoSubmit/GetCategories/{id}")]
    [HttpGet]
    public object GetCategories(int id)
    {
        return FileServices.GetCategoriesForUser().Select(c => new { Id = c.Id, Name = c.Name });
    }

路由工作正常,我只是不确定如何通过angular / javascript将其发送到控制器(或者...如何在$ http调用中看看路由调用

这是网址:

http://localhost:63203/Index.html#/photosubmit/1

2 个答案:

答案 0 :(得分:1)

我确定$ http类似,但我在工厂使用$ resource来点击我的网络API端点。

services.js 中,我有:

var app = angular.module('app.service', ['ngResource']);

app.factory('api', ['$resource', function ($resource) {
'use strict';
return {
    Categories: $resource('/api/PhotoSubmit/GetCategories/:id', {id: '@id'})
    };
}]);

然后在我的控制器中,我用

调用它
$scope.categories = api.Categories.get({id:"1"});

如果你真的想开始玩乐,你可以在结果使用$ promise后等待并使用数据。

api.Categories.get({id:"1"})
    .$promise
    .then(function (results){
        $scope.categories = results;
    });


更新的 为了将变量放入$ routeParams,我做了以下操作(请记住,这是我的第一个有角度的应用程序,所以有更好的方法来编写代码。)

在我的 app.config 中,我有以下代码来创建一个id参数:

$routeProvider
    ...
    .when('photosubmit/:id', {
        templateUrl: "photo.html",
        controller: "PhotoController"
    })
    .otherwise({ redirectTo: '/' });

然后,我在控制器$scope.$routeParams = $routeParams;中得到了参数 我不得不在顶部这样做,所以它不会丢失或未定义。

接下来,您可以使用$scope.$routeParams.id

访问您在路线中创建的变量

答案 1 :(得分:0)

Id可以通过url本身传递。

url: '/api/PhotoSubmit/GetCategories/1',

或者你也可以用params传递它。

$http({
    url: '/api/PhotoSubmit/GetCategories', 
    method: "GET",
    params: {id: 1}
 });