排除Sitecore MVC中的路由

时间:2015-06-19 21:37:30

标签: model-view-controller sitecore

如何排除sitecore或glassmapper处理路由?

尝试加载标准MVC路由(控制器/操作)。我不希望sitecore处理它。我看到了这个错误:

Attempt to retrieve context object of type 'Sitecore.Mvc.Presentation.RenderingContext' from empty stack.

使用Sitecore 8。

2 个答案:

答案 0 :(得分:2)

IgnoreUrlPrefixes设置应该处理此问题。

只需在其中添加路由前缀,Sitecore就应该忽略它。

 <setting name="IgnoreUrlPrefixes" value="....|/yourcontroller"/>

此处有更多信息

http://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2012/06/four-ways-to-process-mvc-requests-with-the-sitecore-aspnet-cms.aspx

答案 1 :(得分:1)

您可以使用MVC路由属性来管理常规路由。要做到这一点,你需要在sitecore初始化管道中注入一个小处理器。

public class RegisterMvcAttributeRoutesPipeline
{
   public void Process(PipelineArgs args)
   {
      RouteTable.Routes.MapMvcAttributeRoutes();
   }
}

然后你需要注入你的处理器:

<sitecore>
   <pipelines>
      <initialize>
        <processor type="{Your processor type here}" patch:before="processor[@type='Sitecore.Mvc.Pipelines.Loader.InitializeControllerFactory, Sitecore.Mvc']" />
      </initialize>
   </pipelines>
</sitecore>

现在您已准备好使用路由属性:

    [RoutePrefix("category")]
    public class CategoryController : Controller
    {
        [HttpGet]
        [Route("get/{id}")]
        public ActionResult Get(string id)
        {
            return Content("MVC url with route attributes");
        }
    }

干杯, 亚历克斯。