Sitecore — добавление маршрута в Application_Start

Я использую sitecore 7.5, и мне нужно добавить новый маршрут в application_start, чтобы использовать его в вызове ajax, но когда я запускаю приложение, кажется, что sitecore работает с маршрутом как с элементом контента, помогите, пожалуйста.


person Mostafa Marji    schedule 06.08.2015    source источник


Ответы (1)


Вот код, который создает маршрут для вас. В global.asax.cs вы будете вызывать RegisterRoutes из обработчика событий App_Start:

    protected void Application_Start()
    {
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }

И там вы указываете свой маршрут как:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
             name: "test",
             url: "mvc/Forms/{action}/{id}",
             defaults: new { controller = "Forms", action = "Test", id = UrlParameter.Optional }
           );
    }

В этом случае у вас будет префикс /mvc/, который будет обрабатывать ваш маршрут к указанному контроллеру, поэтому вы будете называть его так:

/mvc/Forms/Test/{you_may_pass_some_optional_GUID_here}

Это приведет к методу действия класса FormsController Test (идентификатор строки), но вы можете опустить параметр id

Немного внимания: обратите внимание, что настройка маршрута в Application_Start не лучший способ сделать это; Гораздо лучше реализовать сопоставление маршрутов в конвейере Initialize, поскольку это соответствует архитектуре Sitecore:

public class Initialize
{
    public void Process(PipelineArgs args)
    {
        MapRoutes();
    }

    private void MapRoutes()
    {
        RouteTable.Routes.MapRoute(
                "Forms.Test", 
                "forms/test", 
                new
                {
                    controller = "FormsController",
                    action = "Test"
                },
                new[] { "Forms.Controller.Namespace" });
     }
}

Остальная реализация. Ранее я уже писал в своем блоге статью о том, как реализовать ajax-вызов маршрута, которая проведет вас через остальную часть процесса реализации:

http://blog.martinmiles.net/post/editing-content-on-a-cd-server

Обновление: также убедитесь, что в вашей конфигурации есть обработчик для обработки вашего префикса, см. ниже:

<customHandlers>
    <handler trigger="~/mvc/" handler="sitecore_mvc.ashx" />
person Martin Miles    schedule 06.08.2015
comment
Я очень ценю ваш быстрый ответ, но моя проблема не решена, URL-адрес по-прежнему перенаправляет на что-то вроде этого xxx/sitecore/service/ - person Mostafa Marji; 06.08.2015
comment
Мостафа, я обновил свой ответ (внизу), чтобы помочь вам разобраться в том, что вы упомянули в комментарии выше. - person Martin Miles; 06.08.2015