ASP.NET Core中如何实现强类型控制器嵌套路由?
强类型实现父子控制器路由关联
我解决这个问题后分享出来,帮遇到同类问题的开发者参考,也欢迎大家提出更优方案或批评指正。
现有代码
父控制器
[ApiController] [Route("[controller]")] public class ParentController : ControllerBase { [HttpGet] public string Get() => $"Hello, World!"; }
子控制器
[ApiController] [Route("{parentId:int}/[controller]")] public class ChildController : ControllerBase { [HttpGet("{childId:int}")] public string Get(int parentId, int childId) => $"Hello, World by child {childId} of parent {parentId}!"; }
需求与痛点
我需要让子控制器能通过路由/Parent/{parentId}/Child/{childId}访问,但直接硬编码父控制器名称的方式存在明显缺陷:这种路由写法不受类型系统保障,后续对父控制器名称进行重构时,很容易出现路由失效的问题,比如下面这种不推荐的写法:
[ApiController] [Route("Parent/{parentId:int}/[controller]")] public class ChildController : ControllerBase
内容的提问来源于Stack Exchange,提问作者Igor Ganov
相关产品推荐
相关产品推荐

