Kentico ASPX + Portal模板未在数据库

时间:2016-05-03 17:13:52

标签: asp.net kentico

在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

1 个答案:

答案 0 :(得分:2)

你没有做错任何事。我不得不同意这是奇怪的行为,但在标记中设置 WidgetZoneType 属性是不可能的(=不会产生任何影响)。您需要通过管理UI(区域属性)手动设置它。如果这是您的问题,请考虑将其添加到Kentico`s User voice

YMHO我认为你是对的,至少应该在doc中提到它不可能在标记中使用这个属性。

编辑:我的不好,请注意docs中也提到了它:

  

直接在布局代码中更改WidgetZoneType属性不会保存数据库中的更改。您需要通过配置区域属性来设置Widget区域类型属性。