5
我在學習如何使用AngularJS的$資源來調用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; }
}
以下是我正在配置$資源:
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
作爲標準參數或該行爲根本不執行。我不知道問題是在角度,網頁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 $資源和網絡API項目?
所以,如果我創建了$資源的新作用,這確實一個POST,把[FromUri]關該參數,將照顧它,而無需我創建一個自定義模型聯編程序? – adam0101
默認的模型聯編程序在請求的主體中查找JSON。 '$ resource'是RESTful,並在查詢字符串中發送JSON。不匹配的原因是您需要使用模型綁定器或使用'$ http'。 – Romoku
等一下,我很困惑。根據文檔,您可以使用'POST'方法在$ resource上指定新操作。你是說它忽略了它,並把它放在查詢字符串呢? – adam0101