Ошибка отображения сводного представления пользовательской части содержимого в Orchard CMS с использованием Placement.info - PullRequest
3 голосов
/ 18 октября 2011

Я создал пользовательскую часть с именем PresentationPart и поместил ее.

В Place.info у меня есть

<Match ContentType="Presentation">
    <Match DisplayType="Summary">
        <Place Parts_PresentationPart_Summary="Content:after"/>
    </Match>
    <Match DisplayType="Detail">
        <Place Parts_PresentationPart="Content:after"/>
    </Match>
</Match>

Расположение папок

Views ->
    EditorTemplates ->
        Parts ->
            Parts_PresentationPart.cshtml   
    Parts ->
         Parts_PresentationPart.cshtml
         Parts_PresentationPart.Summary.cshtml

Представление Parts_PresentationPart_Summary никогда не используется (при попытке отображения сводки в представлении списка).

Если я изменю область совпадения Сводной информации Placement.info на

<Match DisplayType="Summary">
    <Place Parts_PresentationPart="Content:before"/>
    <Place Parts_PresentationPart_Summary="Content:after"/>
</Match>

Отобразится обычный вид.

Что требуется для отображения сводного представления? Или я что-то пропускаю?

edit: я пропустил CombinedResult в драйвере дисплея.

Оригинал:

protected override DriverResult Display(PresentationPart part, string displayType, dynamic shapeHelper)
{
    return ContentShape("Parts_PresentationPart",() => shapeHelper.Parts_PresentationPart(ContentItem: part.ContentItem, Name: part.Name)));
}

Так что мне нужно что-то вроде этого?

var driverResults = new List<DriverResult>();
driverResults.Add(ContentShape("Parts_PresentationPart", () => shapeHelper.Parts_PresentationPart(ContentItem: part.ContentItem, Name: part.Name)));
driverResults.Add(ContentShape("Parts_PresentationPart_Summary",() => shapeHelper.Parts_PresentationPart(ContentItem: part.ContentItem, Name: part.Name)));
return new CombinedResult(driverResults);

1 Ответ

2 голосов
/ 19 октября 2011

Относитесь к "нормальным" и "суммарным" фигурам как к совершенно отдельным. Это значит, что вы просто не должны показывать «нормальный» при отображении резюме (и наоборот):

<Match DisplayType="Summary">
    <Place Parts_PresentationPart="-"/>
    <Place Parts_PresentationPart_Summary="Content:after"/>
</Match>

Вы не опубликовали способ отображения драйвера , поэтому я не уверен, что вы возвращаетесь с него ...

Чтобы этот сценарий работал, вы должны вернуть CombinedResult как с обычной, так и с "суммарной" фигурами внутри . Диспетчер отображения может затем решить, какой из них отображать, основываясь на данных, хранящихся в Placement.info .

...