【发布时间】:2014-05-28 15:22:28
【问题描述】:
我正在学习如何使用 AngularJS 的 $resource 来调用 Web Api 后端。我想将对象层次结构作为标准传递并取回IEnumerable<Program>。以下是条件示例:
$scope.criteria = {
Categories:[
{
Name: "Cat1",
Options: [
{Text: "Opt1", Value: true},
{Text: "Opt2", Value: false}
]
},
{
Name: "Cat2",
Options: [
{Text: "Opt3", Value: true},
{Text: "Opt4", Value: false}
]
}
]
}
我在服务器上用 C# 定义了相同的对象。
public class CriteriaModel
{
public IEnumerable<CriteriaCategory> Categories { get; set; }
}
public class CriteriaCategory
{
public string Name { get; set; }
public IEnumerable<CriteriaOption> Options { get; set; }
}
public class CriteriaOption
{
public string Text { get; set; }
public bool Value { get; set; }
}
这是我配置 $resource 的方式:
angular.module('my.services')
.factory('api', [
'$resource',
function ($resource) {
return {
Profile: $resource('/api/profile/:id', { id: '@id' }),
Settings: $resource('/api/settings/:id', { id: '@id' }),
Program: $resource('/api/program/:id', { id: '@id' })
};
}
]);
我这样称呼它:
api.Program.query({ criteria: $scope.criteria }, function (response) {
$scope.programs = response;
});
无论我尝试什么,要么得到null 作为标准参数,要么根本不执行操作。我不知道问题出在 angular、web api 还是两者兼而有之。这是操作:
public class ProgramController : ApiController
{
public IEnumerable<Program> GetByCriteria([FromUri]CriteriaModel criteria)
{
// Either criteria is null or this action doesn't even get
// executed depending on what I try.
}
}
有人可以帮我找到一个使用 AngularJS $resource 和 Web Api 搜索和返回项目的工作示例吗?
【问题讨论】:
标签: c# angularjs asp.net-web-api ngresource