1

我想在已经安装了 Umbraco 的 ASP.NET MVC 应用程序中包含普通控制器和视图,如果我是 Umbraco 的新手,请原谅我遗漏了一些东西。

我尝试遵循此https://24days.in/umbraco-cms/2016/adding-umbraco-to-existing-site/ 但它基于 Umbraco 7,我无法从IApplicationEventHandler.

我尝试直接添加控制器和视图,但路由不起作用,因为 Umbraco 接管了路由。

我想知道如何在 Umbraco 中创建普通的 ASP.NET MVC 控制器、视图以及它们的路由。TIA

4

1 回答 1

2

Umbraco8中没有IApplicationEventHandler,他们已将其替换为User Composers

Umbraco 有自己的 global.asax 实现,正如你所说,它会覆盖默认路由。不执行通常的路由类,您必须在应用程序启动时添加您的路由。

我设法通过创建一个User Composer来做到这一点。用户作曲家在核心作曲家之后、最终作曲家之前作曲。

(下面,我创建了一个IComposer,但IUserComposer也应该可以工作。)

public class ApplicationEventComposer : IComposer
{
    public void Compose(Composition composition)
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

在这个中你可以注册你自己的 RouteConfig、Bundles 等。小心点,很容易弄乱 Umbraco 路由......

下面是添加一个名为 TestController 的新控制器的示例:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            name: "Test",
            url: "Test/{action}/{id}",
            defaults: new { controller = "Test", action = "Index", id = UrlParameter.Optional }
        );
    }
}
于 2019-07-10T14:28:58.000 回答