Umbraco路由

问题描述 投票:1回答:2

我正在研究由Visual Studio中的一些人与Umbraco合作开发的项目。起初,我认为这是一个基于Umbraco的.NET MVC应用程序。但是,经过更彻底的研究后,我可以说它与.NET MVC应用程序无关。没有控制器,解决方案中既没有program.cs也没有startup.cs。相反,umbraco和umbraco_client文件夹中有umbraco文件。

当然,一切正常。但是怎么样?例如,当我们写:localhost:50174/go/apply it can find the correct Umbraco content node.谁负责路由,因为没有MVC路由?

routing umbraco umbraco7
2个回答
2
投票

如上所述,Umbraco内部默认处理Umbraco站点的路由。用于呈现这个的控制器是RenderMvcControllerhttps://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


1
投票

我相信它是带下划线的代码,用于处理Umbraco中的路由,这就是为什么你找不到你想要的文件的原因。

以下网址可能会对您有所帮助:https://our.umbraco.org/documentation/reference/routing/Request-Pipeline/

上面的文章解释了它是如何工作的。不知道你为什么要找它。如果你想劫持默认路由,请转到surfacecontroller并编写自己的控制器和逻辑来处理视图。以下链接可能对您感兴趣:

https://our.umbraco.org/documentation/reference/routing/surface-controllers

© www.soinside.com 2019 - 2024. All rights reserved.