C# Web Api 2-如何从$http调用向控制器发送属性(属性路由)
我有一个$http呼叫:C# Web Api 2-如何从$http调用向控制器发送属性(属性路由),c#,javascript,angularjs,url-routing,asp.net-web-api2,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方法: [Rou
$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
Id可以通过url本身传递
url: '/api/PhotoSubmit/GetCategories/1',
或者你也可以在params中传递这个
$http({
url: '/api/PhotoSubmit/GetCategories',
method: "GET",
params: {id: 1}
});
我确信$http是类似的,但我正在工厂中使用$resource来访问我的web api端点
在services.js中,我有: 然后在我的控制器中,我用
$scope.categories = api.Categories.get({id:"1"});
如果你真的想开始玩得开心,你可以等待结果出来后使用$PROMITE使用数据
api.Categories.get({id:"1"})
.$promise
.then(function (results){
$scope.categories = results;
});
更新: 要将变量放入$routeParams中,我将执行以下操作(请记住,这是我的第一个angular应用程序,因此有更好的方法来编写代码。) 在我的app.config中,我有以下代码来创建id参数:
$routeProvider
...
.when('photosubmit/:id', {
templateUrl: "photo.html",
controller: "PhotoController"
})
.otherwise({ redirectTo: '/' });
然后,我在控制器$scope.$routeParams=$routeParams;
我必须在顶部执行此操作,以免丢失或未定义
接下来,您可以使用
$scope.$routeParams.id
访问您在路由中创建的变量。您的javascript url没有基(localhost:63203
)或者一个参数hmmm。不确定您在这里的意思…但是…有一件事…当您键入params:id:1时,您如何从url或路由获取param?params在http调用的请求参数中发送这些参数。控制器代表这些名称从请求参数中提取值。嗯..我就快到了:)但是。。。这对我来说仍然是“未知领域”…)我得到了对象{$id=“1”,returnData=7}“NetworkError:400错误请求-”。。。当我注入routeParams并使用时:var photoId=$routeParams.id;好。。我快到了:)但是。。。这对我来说仍然是“未知领域”…)我得到了对象{$id=“1”,returnData=7}“NetworkError:400错误请求-”。。。当我注入routeParams并使用时:var photoId=$routeParams.id;所以当url看起来像这样时,我仍然无法完全理解如何获取参数:它是否“神奇地”理解这是“id”?以及。。似乎这是不正确的,因为出现了“双id”错误:url:“/api/PhotoSubmit/GetCategories/:id”,如果将id:1作为参数传递,它将在字符串末尾显示为?id=1。这就是为什么我使用变量:id并在代码中分配它。至于从url获取参数,当有人转到photosubmit/1时,您是否希望对photosubmit/getcategories/1进行api调用?您必须使用路由将其分配给变量。我会更新我的答案。
$routeProvider
...
.when('photosubmit/:id', {
templateUrl: "photo.html",
controller: "PhotoController"
})
.otherwise({ redirectTo: '/' });