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