在Kentico中我使用ASPX + Portal模型在磁盘上创建了一个模板作为webform,其中包含一个小部件区域,如下所示:
<asp:Content id="content" runat="server" ContentPlaceHolderID="content">
<h1>Home: <%= this.PageModel.DisplayTitle %></h1>
<cms:CMSPagePlaceholder ID="plcZones" runat="server">
<LayoutTemplate>
<cms:CMSWebPartZone ID="zoneEditorContent" runat="server" ZoneTitle="Page content" WidgetZoneType="Editor" />
</LayoutTemplate>
</cms:CMSPagePlaceholder>
</asp:Content>
然后我在Kentico的页面模板模块中注册了这个。
使用此模板的网页现在会在“页面”标签上显示该区域,但不允许我向其添加小部件。我可以浏览小部件库,选择小部件,设置其属性,保存并关闭对话框,但页面将刷新为空。
经过一番争吵之后,我发现数据库表[dbo].[CMS_PageTemplate]
中的相关模板记录的[PageTemplateWebParts]
属性设置为&#39; <page />
&#39;。
我发现将此更改为&#39; <page><webpartzone id="zoneEditorContent" v="1" widgetzonetype="editor" /></page>
&#39;解决了这个问题。我现在可以在页面选项卡上向区域添加小部件。
我的问题是,我在这里做错了什么?我认为我不应该手动设置这个数据库字段。 Kentico应该自动执行此操作吗?如果是这样,我错过了哪一步才能实现此目的?我相信我已经准确地跟踪了Kentico documentation。
答案 0 :(得分:2)
你没有做错任何事。我不得不同意这是奇怪的行为,但在标记中设置 WidgetZoneType 属性是不可能的(=不会产生任何影响)。您需要通过管理UI(区域属性)手动设置它。如果这是您的问题,请考虑将其添加到Kentico`s User voice。
YMHO我认为你是对的,至少应该在doc中提到它不可能在标记中使用这个属性。
编辑:我的不好,请注意docs中也提到了它:
直接在布局代码中更改WidgetZoneType属性不会保存数据库中的更改。您需要通过配置区域属性来设置Widget区域类型属性。