Пользовательские конвейерные процессоры и 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).

Другие вопросы по тегам