1

sitecore mvc是否支持asp.net web表单中的自定义管道?sitecore mvc中的自定义流水线处理器和IOC

我有一个类实现RenderLayoutProcessor并重写Process方法。通过更新web config部分,该类名称作为自定义处理器添加到管道中,如下所示。

<renderLayout> 
    <processor type="Sitecore.Pipelines.PreprocessRequest.CheckIgnoreFlag, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.PageHandlers, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.SecurityCheck, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.InsertRenderings, Sitecore.Kernel"/> 

    <processor type="MysitecoreApp.Project.Pipelines.MyProcessor, MysitecoreApp.Project" /> 

    <processor type="Sitecore.Pipelines.RenderLayout.PageExtenders, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.ExpandMasterPages, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.BuildTree, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.InsertSystemControls, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.InsertUnusedControls, Sitecore.Kernel"/> 
    <processor type="Sitecore.Pipelines.RenderLayout.BrowserCaching, Sitecore.Kernel"/> 
</renderLayout> 

的方法方法触发用于Sitecore的请求(如http://website/sitecore/login),但不是对网站的网页上请求(如http://website/home)。

下面是类定义。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Sitecore.Data.Items; 
using Sitecore.Layouts; 
using Sitecore.Pipelines.RenderLayout; 
using Sitecore.Mvc.Presentation; 

namespace MysitecoreApp.Project.Pipelines 
{ 
    public class MyProcessor : RenderLayoutProcessor 
    { 
     public override void Process(RenderLayoutArgs args) 
     { 
      var page = Sitecore.Context.Item; 
      if (page != null) 
      { 

      } 
     } 
    } 
} 

我这样做是为了实现IOC使用管道(RenderLayout处理器这里)如图this example

因此,将在Sitecore的MVC这个管道概念的工作?如果它不怎么在Sitecore MVC中实现IOC。我正在实施IOC以拥有可以具有多个呈现项目的单个页脚组件。

回答

0

这个问题的标题应该更多地沿着自定义流水线处理器和sitecore mvc中的条件呈现。

您列出的参考文献提及了处理条件呈现的方法。他们没有描述如何在Sitecore中实现IOC。 如果您在这里阅读:“这个概念与IoC或依赖注入的想法非常相似,因此这个名字很没有想象力。”从这篇文章:http://www.awareweb.com/awareweblegacy/awareblog/inversioncontrol1

有很多方法可以在Sitecore中实现IOC。我将使用Glass映射器和Castle Windsor作为IOC。

但是我认为你的实际问题是: renderLayout管道是否支持MVC视图? - 答案是否定的。尝试mvc.renderRendering管道。调查Sitecore.Mvc.config中的mvc管道(https://github.com/HedgehogDevelopment/sitecore-mvc/blob/master/MvcNewsApp/App_Config/Include/Sitecore.Mvc.config