Как добавить маршруты корневого уровня (не в области) - PullRequest
0 голосов
/ 25 июня 2018

Завершите здесь noob to Orchard (и CMS в целом), поэтому, пожалуйста, исправьте все мои заблуждения. У меня есть существующий сайт, который я пытаюсь переделать в модуль Orchard. Цель в основном та же, что и раньше, но владельцы имеют возможность добавлять свои собственные страницы постов в блоге через графический интерфейс Orchard.

Этот сайт-как-модуль, который я назову SiteModule, должен иметь маршруты на корневом уровне приложения, чтобы он выглядел как "мой сайт + CMS", а не как CMS + мой сайт ".

Как мне построить маршруты в моем SiteModule, чтобы они находились в корне приложения, а не по умолчанию в выделенной области /SiteModule?

1 Ответ

0 голосов
/ 26 июня 2018

Как вы можете догадаться, по умолчанию он настроен так, чтобы модули не наступали друг другу на пальцы, но вы можете легко добавлять свои собственные маршруты. Этот код предполагает, что у вас есть два контроллера в вашем модуле, называемые Home и Default. Создайте файл Routes.cs в маршруте вашего проекта SiteModule.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Orchard.Mvc.Routes;

namespace SiteModule {
    public class Routes : IRouteProvider {
        public void GetRoutes(ICollection<RouteDescriptor> routes) {
            foreach (var routeDescriptor in GetRoutes())
                routes.Add(routeDescriptor);
        }

        public IEnumerable<RouteDescriptor> GetRoutes() {
            return new[] {
                new RouteDescriptor {
                    Priority = 5,
                    Route = new Route(
                        "Home/{action}",
                        new RouteValueDictionary {
                            {"area", "SiteModule"},
                            {"controller", "Home"},
                            {"action", "Index"}
                        },
                        new RouteValueDictionary(),
                        new RouteValueDictionary {
                            {"area", "SiteModule"}
                        },
                        new MvcRouteHandler())
                },
                new RouteDescriptor {
                    Priority = 5,
                    Route = new Route(
                        "Default/{action}",
                        new RouteValueDictionary {
                            {"area", "SiteModule"},
                            {"controller", "Home"},
                            {"action", "Gogo"}
                        },
                        new RouteValueDictionary(),
                        new RouteValueDictionary {
                            {"area", "SiteModule"}
                        },
                        new MvcRouteHandler())
                }
            };
        }
    }
}

Полагаю, просто следите, чтобы вы не перекрывали ни один из маршрутов Орчарда по умолчанию:)

...