加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:37:40 所属栏目:asp.Net 来源:网络整理
导读:有没有更好的方式在新的ASP.net MVC 4 WebApi处理嵌套的资源比为每个设置一个特殊的路由? (类似于这里: ASP.Net MVC support for Nested Resources? – 这是在2009年发布)。 例如我想处理: / customers / 1 / products / 10 / 我看到一些ApiController动
有没有更好的方式在新的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]等。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读