我使用AngularJS $资源联系服务器上的MVC ActionMethods。资源URL是/ api / customer,因此对于$ resource.query函数,我在ApiController上提供了一个名为Customer的ActionMethod。这很好。
现在我想为$ resource.save提供一个ActionMethod。
显然,第二个ActionMethod需要相同的名称,但由于ActionMethod都没有任何参数,因此不允许这样做。
这种情况的最佳做法是什么?我应该远离AngularJS项目的服务器端MVC吗?
提前谢谢。
答案 0 :(得分:3)
您应该创建一个从ApiController派生的控制器CustomerController。然后方法
Get(int id)
适用于获取具有特定ID的客户。网址:api/customer/1
Delete(int id)
适用于删除具有特定ID的客户。网址:api/customer/1
答案 1 :(得分:3)
继我的评论之后,我正在添加这个答案以防有人发现它有用。它解决了我原来的问题,但我不知道它是否是最佳解决方案。
原厂:
app.factory("customerResource", function ($resource) {
var customerResource = $resource("/api/customer/:id", { id: "@id" });
return customerResource;
});
控制器中的原始行:
$scope.customers = customerResource.query();
修改后的工厂:
app.factory("customerResource", function ($resource) {
var customerResource = $resource("/api/:action/:id", { id: "@id", action: "@action" });
return customerResource;
});
控制器修改后的一行:
$scope.customers = customerResource.query({action: "get");
现在我可以使用其他$ resource函数使用不同的操作,如下所示:
drawing.$remove({action: "delete"});
这些调用将到达ASP.MVC服务器上的Get
和Delete
ActionMethod。