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

asp.net-mvc – 没有区域的ASP.NET Web API中的多级路由

发布时间:2020-12-16 07:32:55 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用新的ASP.NET Web API执行以下操作: GET到/ api / business / {id}获取业务的目录信息.对同一URL的PUT更新信息等.该部分工作正常.当我想要添加以前曾经是一个动作的内容时,我遇到的问题就是查看该业务的评论.理想情况下,我希望在/ api / busin
我正在尝试使用新的ASP.NET Web API执行以下操作:

GET到/ api / business / {id}获取业务的目录信息.对同一URL的PUT更新信息等.该部分工作正常.当我想要添加以前曾经是一个动作的内容时,我遇到的问题就是查看该业务的评论.理想情况下,我希望在/ api / business / {id} / reviews中可以访问,其中GET返回评论,POST提交新评论,等等.

在普通的ASP.NET MVC应用程序中,我可以定义两个操作方法(Review和PostReview),然后使用属性来更改操作名称并接受第二个函数的HTTP方法.我希望有一些方法可以在新系统中使用类,但我无法弄清楚它是什么,我在文档中没有看到任何关于这个问题的内容.

使用区域不起作用,我可以说:我需要/ business / {id} URL工作以及中断的区域.

解决方法

Web API确实支持按行为进行路由,因此您可以执行以下操作:

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

控制器方法:

[HttpGet]
[ActionName("DirectoryInfo")]
public void GetDirectoryInfo(int id)

[HttpPut]
[ActionName("DirectoryInfo")]
public void PutDirectoryInfp(int id)

[HttpGet]
public void Review(int id)

[HttpPost]
[ActionName("Review")]
public void PostReview(int id)

另一种选择是创建两个控制器,BusinessController和ReviewController,并创建以下路由:

routes.MapHttpRoute(
    name: "BusinessRoute",routeTemplate: "api/business/{id}",defaults: new { controller = "Business",id = RouteParameter.Optional }
    );
routes.MapHttpRoute(
    name: "reviewsRoute",routeTemplate: "api/contacts/{id}/reviews/",defaults: new { controller = "Reviews",id = RouteParameter.Optional}
    );

然后使用Web API样式的隐式动作名称.

(编辑:李大同)

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

    推荐文章
      热点阅读