我创建了一个名为PresentationPart的自定义零件,并将其放置。
在placement.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的Presentation Summary匹配区域修改为
<Match DisplayType="Summary">
<Place Parts_PresentationPart="Content:before"/>
<Place Parts_PresentationPart_Summary="Content:after"/>
</Match>
将显示普通视图。
要显示摘要视图需要什么?或者有什么东西我完全不跳过了吗?
编辑:我在显示驱动程序中跳过了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);
答案 0 :(得分:2)
将“正常”和“摘要”形状视为完全独立的形状。 这就是说,在显示摘要时你应该不显示“正常”的一个(反之亦然):
<Match DisplayType="Summary">
<Place Parts_PresentationPart="-"/>
<Place Parts_PresentationPart_Summary="Content:after"/>
</Match>
您尚未发布驱动程序显示方法,因此我不确定您从中返回了什么...
要使此方案有效,您应该返回 CombinedResult,其中包含正常和“摘要”形状。然后,显示管理器可以根据存储在Placement.info 中的数据决定显示哪一个。