使用AngularJS和MVC.NET处理$资源

时间:2014-05-03 07:35:39

标签: asp.net-mvc angularjs angularjs-resource

我使用AngularJS $资源联系服务器上的MVC ActionMethods。资源URL是/ api / customer,因此对于$ resource.query函数,我在ApiController上提供了一个名为Customer的ActionMethod。这很好。
现在我想为$ resource.save提供一个ActionMethod。 显然,第二个ActionMethod需要相同的名称,但由于ActionMethod都没有任何参数,因此不允许这样做。
这种情况的最佳做法是什么?我应该远离AngularJS项目的服务器端MVC吗? 提前谢谢。

2 个答案:

答案 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服务器上的GetDelete ActionMethod。