Sitecore - 在Application_Start中添加路由

时间:2015-08-06 12:33:41

标签: sitecore sitecore-mvc

我正在使用sitecore 7.5,我需要在application_start中添加新路由以便在ajax调用中使用它,但是当我运行应用程序时,似乎sitecore将路由作为内容项处理任何帮助请

1 个答案:

答案 0 :(得分:4)

以下是为您创建路线的代码。在global.asax.cs中,您将从App_Start事件处理程序中调用RegisterRoutes

    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),但您可以省略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" />