Asp.net mvc ASP.NET核心嵌套/分层控制器
嗨,这里是人满为患的堆垛工!正在寻找有关在asp.net core中使用分层或嵌套控制器的帮助 到目前为止,与我所看到的不同,默认样板代码及其默认路由Asp.net mvc ASP.NET核心嵌套/分层控制器,asp.net-mvc,asp.net-core,asp.net-routing,asp.net-mvc-controller,Asp.net Mvc,Asp.net Core,Asp.net Routing,Asp.net Mvc Controller,嗨,这里是人满为患的堆垛工!正在寻找有关在asp.net core中使用分层或嵌套控制器的帮助 到目前为止,与我所看到的不同,默认样板代码及其默认路由{controller=Home}/{action=Index}/{id?}只允许控制器位于默认的controllers目录中,而该目录根本不允许嵌套 从目前为止我所看到的情况来看,有几种方法可以解决这个问题,在我看来,这两种方法都不理想 Razor查看页面 在开箱即用的情况下,Razor Pages似乎会自动绕过此问题,因为.net核心会自动尝试
{controller=Home}/{action=Index}/{id?}
只允许控制器位于默认的controllers目录中,而该目录根本不允许嵌套
从目前为止我所看到的情况来看,有几种方法可以解决这个问题,在我看来,这两种方法都不理想
[Route(“parent/Route/path”)]
问题出在哪里?相同的名称空间(文件夹)意味着不重用控制器名称,鉴于我们应用程序的性质,我们需要为控制器命名名称空间。更不用说它将使控制器文件夹变得庞大,包含100个控制器文件
模糊usactionexception:多个操作匹配。
对我来说,最大的痛点是在.NETMVC框架的正常版本中支持名称空间。出于某种原因,Microsoft的某个人已从MapRoute()
方法中删除了名称空间参数。我不明白为什么会这样做
不仅仅是一句咆哮
在我继续之前,这篇文章不是我的抱怨或咆哮,我真的在寻找一个更好的解决方案,并在寻找其他的想法和选择。请继续阅读下面我的理想解决方案
理想溶液
由于我有PHP背景,我发现只需使用默认的spl\u register\u autoloader()
即可满足我的需求。我可以注册我选择的特定名称空间,PHP可以查看我想要的控制器的本地目录文件夹结构中后续名称空间的任何和所有部分
i、 e.PHP控制器Controllers\NestingLevel1\NestingLevel2\HomeController
将在Controllers\NestingLevel1\NestingLevel2\HomeController.PHP中查找关联的控制器
简单,美丽,我提到过简单吗
总结
是否有任何方法可以在ASP.NET core中获得嵌套控制器,而无需:
控制器不必位于控制器文件夹中,它们可以位于ASP.NET Core中的任何位置。不过问题是好的,更像是我们如何根据应用程序中控制器的相对路径为其自动设置URL前缀。