Я использую sitecore 7.5, и мне нужно добавить новый маршрут в application_start, чтобы использовать его в вызове ajax, но когда я запускаю приложение, кажется, что sitecore работает с маршрутом как с элементом контента, помогите, пожалуйста.
Sitecore — добавление маршрута в Application_Start
Ответы (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" />