ascx中的多个CMSEditableRegion?

问题描述:

我有三个CMSEditableRegion控件内部的一个ascx需要在一个aspx页面上3次或更多次。ascx中的多个CMSEditableRegion?

问题是,每个区域控件将始终包含它们的最后一组内容。

经过一番小小的研究,我发现它将控件的内容保存在控件的ID下,这意味着第一个CMSEditableRegion的内容将被最后一个CMSEditableRegion的内容覆盖(因为存在至少三个具有相同的服务器ID - 每个ascx一个)。那么,那是为了Kentico 5,但我所看到的往往会支持这一点。不幸的是,我发现Kentico 5的解决方案在Kentico 10中不起作用。

我如何在ascx中多次使用多个CMSEditableRegion控件来多次访问aspx页面?

编辑:我们确实使用门户管理器(正确),我们的主人使用指定的Kentico文档进行设置。

当您使用门户引擎时,您可以拥有尽可能多的,并且应该适用于aspx开发模型。你关注了the example吗? 我想看看数据库里面,以确保XML正确保存:

select CONVERT(xml,DocumentContent), * from cms_document where documentid = 123 

当您保存Web部件(在门户引擎,这是CMSEditableRegion的等价物)中,XML是这样的:

<content> 
    <webpart id="editabletext1;fe77e447-3af4-440f-a736-7c1e321cb3fc">456</webpart> 
    <webpart id="editabletext;3bb22493-8e7d-47c1-9dc0-dfc5aeff3157">123</webpart> 
</content> 

你应该看起来相同或非常相似。它可能有些事情要做的ID或绑定。

+0

我们根据kentico文档创建了主设置和门户管理器/引擎。 – MetalPhoenix

我认为你缺少门户网站经理:

<cms:CMSPortalManager ID="manPortal" runat="server" EnableViewState="false" /> 

但最简单的方法来理解其工作原理是在CMSTemplates/CorporateSite打开Kentico APX模板。在那里,你会发现主页(root.master)与主页模板(HomeASPX.aspx)。在master中,您可以看到门户网站管理器已放置在家中,您可以根据需要添加尽可能多的可编辑区域。我确实尝试过。

希望这可以解决您的问题。

+0

没有,根据kentico文档,我们在那里有一个门户管理器。 – MetalPhoenix

+0

您是否检查过CMSTemplates/CorporateSite中的Kentico ASPX模板是如何完成的? –

+0

*直接从文档中复制/粘贴,如下所示:https://docs.kentico.com/k10/developing-websites/developing-websites-using-aspx-templates/creating-master-pages-for -aspx-templates – MetalPhoenix

您需要确保每个CMSEditableRegion的控件ID都是唯一的,以便将每个实例的数据分别存储在数据库中。

您可以通过在Web部件代码隐藏文件ascx中设置控件的ID来实现此目的。

放置CMSEditableRegion到您的ASCX ...

<cms:CMSEditableRegion runat="server" ID="cerContent" RegionTitle="WYSIWYG" RegionType="HtmlEditor" /> 

...,然后设置在后面的代码控件的ID ...

cerContent.ID = this.ID + cerContent.ID; 

由这里产生的唯一ID将控件的ID与this.ID联系起来,这是Web部件实例放置在页面上时的唯一ID。

适用于我在Kentico 10。