如何在已安装 umbraco 8 的 ASP.NET MVC 应用程序中创建普通控制器和视图

How to create normal controllers and views in an ASP.NET MVC application that already has umbraco 8 installed

我想在我的 ASP.NET MVC 应用程序中包含正常的控制器和视图,该应用程序已经安装了 Umbraco,如果我是 Umbraco 的新手,请原谅我遗漏了什么。

我试图遵循这个 https://24days.in/umbraco-cms/2016/adding-umbraco-to-existing-site/ 但它基于 Umbraco 7,我无法继承 IApplicationEventHandler

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

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

Umbraco8 中没有 IApplicationEventHandler,他们用 User Composers

代替了它

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

我通过创建 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 }
        );
    }
}