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

Итак, будет ли эта концепция конвейеров работать в sitecore MVC? Если это не так, как реализовать IOC в Sitecore MVC. Я реализую IOC, чтобы иметь один компонент нижнего колонтитула, который может иметь несколько элементов рендеринга.


person Pranay    schedule 04.05.2015    source источник


Ответы (1)


Название этого вопроса должно быть чем-то вроде пользовательских конвейерных процессоров и условного рендеринга в sitecore mvc.

В перечисленных вами ссылках упоминаются способы работы с условным рендерингом. Они не описывают, как реализовать IOC в Sitecore. Если вы прочтете здесь: «Концепция очень похожа на идеи IoC или внедрения зависимостей, отсюда и довольно невообразимое название». из этой статьи: http://www.awareweb.com/awareweblegacy/awareblog/inversioncontrol1

Существует множество способов реализации IOC в Sitecore. Я бы использовал Glass mapper и Castle Windsor для IOC.

Однако я думаю, что ваш реальный вопрос: работает ли конвейер renderLayout с представлениями MVC? - Ответ нет. Попробуйте конвейер mvc.renderRendering. Изучите конвейеры mvc в Sitecore.Mvc.config (https://github.com/HedgehogDevelopment/sitecore-mvc/blob/master/MvcNewsApp/App_Config/Include/Sitecore.Mvc.config)

person Jason Horne    schedule 04.05.2015