2017-02-20 28 views
2

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

問題是,每個區域控件將始終包含它們的最後一組內容。

經過一番小小的研究,我發現它將控件的內容保存在控件的ID下,這意味着第一個CMSEditableRegion的內容將被最後一個CMSEditableRegion的內容覆蓋(因爲存在至少三個具有相同的服務器ID - 每個ascx一個)。那麼,那是爲了Kentico 5,但我所看到的往往會支持這一點。不幸的是,我發現Kentico 5的解決方案在Kentico 10中不起作用。

我如何在ascx中多次使用多個CMSEditableRegion控件來多次訪問aspx頁面?

編輯:我們確實使用門戶管理器(正確),我們的主人使用指定的Kentico文檔進行設置。

回答

0

當您使用門戶引擎時,您可以擁有儘可能多的,並且應該適用於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

0

我認爲你缺少門戶網站經理:

<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

2

您需要確保每個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。