Пользовательская часть не отображается в виджете в Orchard CMS

кросспост: https://orchard.codeplex.com/discussions/549374

Я использую Orchard 1.8 и создал часть, которую прикрепил к виджету. Это базовая часть, но у меня проблемы с рендерингом шаблона. Вот мой код:

МОДЕЛЬ

public class AppsWidgetRecord : ContentPartRecord {        
}

public class AppsWidgetPart : ContentPart<AppsWidgetRecord> {    
}

ВОДИТЕЛЬ

public class AppsWidgetDriver : ContentPartDriver<AppsWidgetPart>
{
    protected override DriverResult Display(AppsWidgetPart part, string displayType, dynamic shapeHelper)
    {
        return ContentShape("Parts_AppsWidget",
            () => shapeHelper.Partial(
                TemplateName: "Parts/AppsWidget"
        ));
    }
}

У меня есть AppsWidget.cshtml в разделе View/Parts

МИГРАЦИЯ

        #region Define Apps Widget

        ContentDefinitionManager.AlterPartDefinition(
            typeof(AppsWidgetPart).Name, cfg => cfg.Attachable());

        ContentDefinitionManager.AlterTypeDefinition("AppsWidget", cfg => cfg
            .WithPart("WidgetPart")
            .WithPart(typeof(AppsWidgetPart).Name)
            .WithPart("CommonPart")
            .WithSetting("Stereotype", "Widget"));

        #endregion

        #region Create Apps Widget

        var appsWidget = _widgetsService.CreateWidget(homepageLayer.Id, "AppsWidget", "Apps", "5", "AfterContent");
        appsWidget.RenderTitle = true;
        appsWidget.Name = "apps";
        _contentManager.Publish(appsWidget.ContentItem);

        #endregion

МЕСТО РАЗМЕЩЕНИЯ

<Place Parts_AppsWidget="AfterContent:5" />

Виджет отображается нормально, однако шаблон части не отображается вообще. Когда я формирую трассировку, части appswidget нигде не видно под виджетом, но когда я проверяю модель, она там.

введите здесь описание изображения

Я также отладил и подключил функцию отображения в драйвере, и никаких проблем не возникло. В логах ошибок тоже не вижу.

Есть идеи?


person AnimaSola    schedule 23.06.2014    source источник
comment
Кажется, вам не хватает обработчика. Кроме того, зачем вам класс записи, если он будет пустым?   -  person Bertrand Le Roy    schedule 24.06.2014


Ответы (1)


Я не уверен, правильно ли вы отображаете форму в драйвере. Я обычно делаю это так.

protected override DriverResult Display(AppsWidgetPart part, string displayType, dynamic shapeHelper)
{
    return ContentShape(
        "Parts_AppsWidget",
        () => shapeHelper.Parts_AppsWidget(ContentItem: part.ContentItem));
}
person Marek Dzikiewicz    schedule 24.06.2014