Пользовательские конвейерные процессоры и IOC в sitecore mvc
Поддерживает ли sitecore mvc пользовательские конвейеры, как в веб-формах asp.net?
У меня есть класс, который реализует RenderLayoutProcessor и переопределить метод Process. Это имя класса добавляется как пользовательский процессор в конвейер путем обновления раздела веб-конфигурации, как показано ниже.
<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 Processor здесь), как показано в этом примере
Итак, будет ли эта концепция конвейеров работать в sitecore MVC? Если это не так, как реализовать IOC в Sitecore MVC. Я внедряю IOC, чтобы иметь один компонент нижнего колонтитула, который может иметь несколько элементов рендеринга.
1 ответ
Название этого вопроса должно быть чем-то более похожим на обычные конвейерные процессоры и условный рендеринг в sitecore mvc.
В перечисленных вами ссылках упоминаются способы работы с условным рендерингом. Они не описывают, как реализовать IOC в Sitecore. Если вы читаете здесь: "Концепция очень похожа на идеи IoC или внедрения зависимости, отсюда и довольно невообразимое имя". из этой статьи: http://www.awareweb.com/awareweblegacy/awareblog/inversioncontrol1
Существует много способов реализации МОК в Sitecore. Я бы использовал Glass mapper и Castle Windsor для МОК.
Однако я думаю, что ваш реальный вопрос: работает ли конвейер renderLayout с представлениями MVC? - Ответа нет. Попробуйте конвейер mvc.renderRendering. Исследуйте конвейеры mvc в Sitecore.Mvc.config ( https://github.com/HedgehogDevelopment/sitecore-mvc/blob/master/MvcNewsApp/App_Config/Include/Sitecore.Mvc.config).