asp.net-mvc – ASP.net MVC 4 WebApi中的嵌套资源

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.net MVC 4 WebApi中的嵌套资源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有更好的方式在新的ASP.net MVC 4 WebApi处理嵌套的资源比为每个设置一个特殊的路由? (类似于这里: ASP.Net MVC support for Nested Resources? – 这是在2009年发布)。

例如我想处理:

/ customers / 1 / products / 10 /

我看到一些ApiController动作命名除了Get(),Post()等的例子,例如here我看到一个动作的例子叫做GetOrder()。我找不到任何文档,虽然。这是一种实现这一点的方法吗?

解决方法

对不起,我更新了这个多次,因为我自己找到一个解决方案。

似乎有很多方法解决这一个,但我发现到目前为止最有效的是:

在默认路由下添加

routes.MapHttpRoute(
    name: "OneLevelNested",routeTemplate: "api/{controller}/{customerId}/{action}/{id}",defaults: new { id = RouteParameter.Optional }
);

然后,此路由将匹配任何控制器操作和URL中匹配的段名称。例如:

/ api / customers / 1 / orders会匹配:

public IEnumerable<Order> Orders(int customerId)

/ api / customers / 1 / orders / 123将匹配:

public Order Orders(int customerId,int id)

/ api / customers / 1 /产品将匹配:

public IEnumerable<Product> Products(int customerId)

/ api / customers / 1 / products / 123将匹配:

public Product Products(int customerId,int id)

方法名称必须与路线中指定的{action}段相匹配。

重要的提示

评论

因为RC,你需要告诉每个动作哪些种类的动词是可以接受的,即[HttpGet]等。

猜你在找的asp.Net相关文章