Как создать обычные контроллеры и представления в приложении ASP.NET MVC, на котором уже установлен umbraco 8 - PullRequest
0 голосов
/ 29 июня 2019

Я хотел бы включить обычные контроллеры и представления в мое приложение ASP.NET MVC, в котором уже есть настройка Umbraco, извините, если я что-то упустил, поскольку я новичок в Umbraco.

Я пытался следовать этомуhttps://24days.in/umbraco-cms/2016/adding-umbraco-to-existing-site/ но он основан на Umbraco 7, и я не могу унаследовать от IApplicationEventHandler.

Я пытался добавить контроллер и представления напрямую, но маршрутизация не работает, так как Umbraco захватываетмаршрутизация.

Я хотел бы знать, как создавать обычные контроллеры ASP.NET MVC, представления и их маршрутизацию в Umbraco.ТИА

1 Ответ

0 голосов
/ 10 июля 2019

В Umbraco8 нет IApplicationEventHandler, они заменили его на Пользовательские композиторы

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 }
        );
    }
}
...