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

Web Api 2 - How to send attribute from $http call to controller (attribute routing)

本文关键字:属性 控制器 路由 调用 http Api Web      更新时间:2023-09-26

我有这个$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调用

中,路由调用应该是什么样子?

这是URL:

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

我确信$http是类似的,但我在工厂中使用$resource来命中我的web 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中,我做了以下操作(记住,这是我的第一个angular应用,所以有更好的方法来编写它)

在我的应用程序。配置,我有以下代码来创建id参数:

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

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

接下来,您可以使用$scope.$routeParams.id
访问您在路由中创建的变量

Id可以通过url本身传递。

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

或者你也可以在参数中传递。

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