我正在研究一个由Visual中的一些人开发的项目,它与Umbraco合作。起初,我认为这是一个.NET MVC应用程序,Umbraco就在这个应用程序之上。但是,经过更深入的研究,我可以说它与.NET MVC应用程序无关。解决方案中没有控制器,也没有program.cs或startup.cs。相反,在umbraco和umbraco_client文件夹中有umbraco文件。
当然,一切都很好。但是怎么做呢?例如,当我们编写:localhost:50174/go/apply it can find the correct Umbraco content node. ,谁负责路由,因为没有MVC路由?
发布于 2018-03-05 22:35:20
如前所述,在默认情况下,Umbraco内部程序处理Umbraco站点的路由。用于呈现这一点的控制器是此处的RenderMvcController:https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Mvc/RenderMvcController.cs
Umbraco在.NET MVC应用程序中运行,所以您认为它与MVC无关的假设实际上是不正确的。完全有可能注册您自己的路由和区域,就像您在任何其他.NET MVC应用程序中所做的那样。默认情况下- Umbraco只是注册它的管道,以便根据它管理的内容来处理请求(毕竟它是一个内容管理系统)。当您输入像/go/apply这样的URL时,Umbraco有一个ContentFinder,它定位与这个URL路径对应的内容,然后使用RenderMvcController呈现内容(当然,除非路由被劫持)。
您可以在这里看到URL内容查找器:https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Routing/ContentFinderByNiceUrl.cs
发布于 2018-02-20 06:52:03
我相信在Umbraco中处理路由的代码是带下划线的,这就是为什么您找不到正在寻找的文件。
下面的url可能会有帮助:https://our.umbraco.org/documentation/reference/routing/Request-Pipeline/
上面的文章解释了它的实际工作原理。不知道你为什么要找它。如果您想劫持默认路由,请选择表面控制器并编写自己的控制器和逻辑来处理视图。下面的链接可能会让您感兴趣:
https://our.umbraco.org/documentation/reference/routing/surface-controllers
https://stackoverflow.com/questions/48866376
复制相似问题