【发布时间】:2017-05-13 05:15:15
【问题描述】:
我在 Kentico 中使用 Repeater Web 部件从内容树中挑选页面,以基于 ASCX 转换生成可重复的结构化 HTML 的 sn-ps。 (这并不奇怪 - 它运行良好!)。
然而,一个新的要求出现了,除了上面提到的现有 HTML 结构之外,每个重复的项目还必须有一个区域,我们可以在其中添加任意数量的附加内容;基于其他 Web 部件。
我之前写过一些“布局”类型的 web 部件;实现CMSAbstractLayoutWebPart,如here 所述,它允许我生成重复数量的Web 部件区域,所以我觉得我已经完成了一半。不过,问题在于,就目前而言,我似乎无法利用页面类型转换的强大功能和灵活性(我真的认为我需要这样做,而且似乎应该这样做有可能..)。
我想我可以直接在转换标记中指定 WebPartZone 控件,如下所示:
<%@ Register Src="~/CMSInlineControls/WebPartZone.ascx" TagName="CMSWebPartZone" TagPrefix="cms" %>
<cms:CMSWebPartZone ZoneID="ZoneIDHere" runat="server" />
<div>
<h3><%# Eval("Heading") %></h3>
<p><%# Eval("Summary") %></p>
</div>
但设计视图似乎没有选择 Web 部件区域;所以我假设页面生命周期可能不允许我按照我希望的那样执行此操作。
所以我想知道的是:
- 是否可以在转换中包含 WebPartZone 控件,以便我可以在设计视图中引入新的 Web 部件?
- 如果不是,推荐的解决方法是什么? (如果自定义 Web 部件是要走的路,我想首先克隆 Repeater Web 部件,因为需要它的许多现有属性 - 但大概这仍然必须从
CMSAbstractLayoutWebPart继承?李>
谢谢!
更新
关于编辑经验的好点;我绝对希望尽可能保持一致。对我来说,问题是驱动我的数据结构的需求并不总是被完全理解——而且肯定会发生变化。此外,它们可能会因不同的产品而有所不同(尽管有细微差别)。因此,我一直在尝试保持模板和页面类型大致相同,并将差异推送到通过宏驱动 Web 部件配置的页面属性中。因此,鉴于转换方法不起作用,我希望自定义 Web 部件适合我。
我将发布我的发现!
【问题讨论】: