Umbraco 路由

Umbraco routing

我正在研究 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 路由?

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

以下 url 可能会有帮助: https://our.umbraco.org/documentation/reference/routing/Request-Pipeline/

以上文章解释了它的实际工作原理。不知道你为什么要找它。如果你想劫持默认路由,请使用 surfacecontroller 并编写你自己的控制器和逻辑来处理视图。以下 link 您可能会感兴趣:

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

如前所述,Umbraco 内部默认处理 Umbraco 站点的路由。用于呈现此内容的控制器是此处的 RenderMvcControllerhttps://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Mvc/RenderMvcController.cs

Umbraco 运行 在 .NET MVC 应用程序中,因此您认为它与 MVC 无关的假设实际上是不正确的。完全可以像在任何其他 .NET MVC 应用程序中那样注册自己的路线和区域。默认情况下 - Umbraco 仅注册其管道以根据其管理的内容处理请求(毕竟它是一个内容管理系统)。当你输入 URL 比如 /go/apply 时,Umbraco 有一个 ContentFinder 定位对应于这个 URL 路径的内容,然后使用 RenderMvcController 渲染内容(当然除非路由被劫持)。

您可以在此处查看 URL 内容查找器:https://github.com/umbraco/Umbraco-CMS/blob/dev-v7/src/Umbraco.Web/Routing/ContentFinderByNiceUrl.cs