Orchardcms Orchard-在零件内添加分区(具有viewmodel)

Orchardcms Orchard-在零件内添加分区(具有viewmodel),orchardcms,orchardcms-1.6,zone,Orchardcms,Orchardcms 1.6,Zone,横杆: 以下是完整的场景: 我有一个EventItem内容项,它有一个EventItem部分,包含所有自定义字段(介绍文本、议程等)。我在EventItem上附加了另一个名为tracks的部分。现在的问题是我想在轨迹中添加一个区域,这样我就可以通过动态区域的放置将EventItem中的字段渲染到轨迹上。我知道我可以提取数据并在零件内部进行渲染,但我希望它具有灵活性,并且更喜欢使用放置/分区 我知道动态区域很容易使用替代项,如我的内容事件项上的以下内容。详细信息替代项: @Display(Mode

横杆:

以下是完整的场景: 我有一个EventItem内容项,它有一个EventItem部分,包含所有自定义字段(介绍文本、议程等)。我在EventItem上附加了另一个名为tracks的部分。现在的问题是我想在轨迹中添加一个区域,这样我就可以通过动态区域的放置将EventItem中的字段渲染到轨迹上。我知道我可以提取数据并在零件内部进行渲染,但我希望它具有灵活性,并且更喜欢使用放置/分区

我知道动态区域很容易使用替代项,如我的内容事件项上的以下内容。详细信息替代项:

@Display(Model.ImageArea)
但是,我的零件使用viewmodel,因此我需要预定义我使用的任何属性/对象。我也读过这个博客,但它不起作用,或者我错过了什么:

以下是我的完整代码(省略了代码中不相关的部分):

跟踪零件模板

@{
Func<dynamic, dynamic> Zone = x => Display(x);
}

<div id="Overview-Tab" class="track-tab">
   @Zone(Model.Overview)
</div>
@{
Func Zone=x=>显示(x);
}
@区域(模型概述)
跟踪零件视图模型

public class DisplayAllViewModel
{
    //public Shape Overview { get; set; }
    public object Overview { get; set; }
    public List<TrackItem> Tracks { get; set; }
}
public类DisplayAllViewModel
{
//公共形状概述{get;set;}
公共对象概述{get;set;}
公共列表轨道{get;set;}
}
事件项的位置

<Match ContentType="EventItem">
    <Match DisplayType="Detail">
    <Place
        Fields_Sections="Overview:1"
        Parts_Tracks="Content:2.5.6" />
    </Match>
</Match>

当我使用概览区域时,Sections字段根本不显示


任何建议或信息都将不胜感激。谢谢

这不是放置和分区的工作方式:分区是在内容形状中定义的,而不是在其下方的子形状中定义的

事实上,你让事情变得更加困难。如果要在轨迹零件模板内显示字段,只需执行以下操作:

@{
    var eventItemPart = Model.ContentItem.EventItem;
    if (eventItemPart != null) {
       @eventItemPart.NameOfTheField.SomePropertyOfThatField
    }
}

或者,您可能想阅读本文:这篇文章将向您展示如何在保持显示原始形状的能力的同时展平模板结构。

只需添加part@display(WorkContext.Layout.Header)

感谢您的回复。是的,它变得非常复杂,需要进行一些改装。快速问题,如何在另一个零件中渲染零件?我已经能够用下面的代码获得部件:var speakerPart=Model.EventItem.Parts.Where(p=>p.PartDefinition.Name==“speakerPart”).FirstOrDefault();但是,当我试图通过@Display(speakerPart)渲染它时,它只渲染文本。无论我是通过零件模板还是内容形状模板执行此操作,都会显示相同的结果。我如何调用我渲染它的方式(扬声器部分的驱动程序中的显示功能)。你从来没有真正渲染过一个部分。渲染由零件驱动程序发射的形状。模板不是这样做的地方。