2016-11-25 66 views
0

我正在使用使用'ASPX + Portal Engine'模板類型的Kentico應用程序。在其中一個頁面中,我需要從所有子節點中顯示所有小部件和Web部件(基本上是整個頁面)。如何從Kentico的不同頁面渲染小部件?

如果我使用「門戶引擎」模板類型,並在用戶控件下面的代碼,它工作得很好:

<asp:Repeater runat="server" ID="ChildPagesRepeater" ItemType="CMS.DocumentEngine.TreeNode"> 
    <ItemTemplate> 
      <div> 
       <p><%# Item.DocumentPageTitle %></p> 

       <cms:CMSPagePlaceholder runat="server" ShortID="p" Path="<%# Item.NodeAliasPath %>" /> 

      </div> 
    </ItemTemplate> 
</asp:Repeater> 

在代碼隱藏,我設置DataSource爲ChildPagesRepeater到樹節點CurrentDocument的子項和這個「正常工作」。但它不適用於'Portal Engine + ASPX'模板。我在這裏錯過了什麼?

我最後的手段是使用WebClient來獲取子頁面的標記並直接渲染它,但我寧願按照「正確」的方式來做。我已經測試過這個功能,但它確實有效,但它並不像那種「正確」的方式。

+0

它不起作用時會發生什麼?它會拋出任何錯誤等?不要使用WebClient來實現這一點,你會遇到更多的問題。 – rocky

回答

1

我已經完成了這個技巧,但只在門戶網站,我只能猜測,如果在portal + aspx.net中完成相同的事情不起作用,一個呈現所有區域的編碼差異,另一個只加載webparts到現有的區域可能是問題。

出於好奇,你爲什麼要做aspx.net + portal?在純粹的Portal(加上一個自定義控件)方面你做不到的東西比你在aspx.net +門戶中做的要少,另外它有一個硬編碼的主模板是非常煩人的。我會轉換。

+0

感謝您的回答。 我不得不轉換回Portal,因爲我找不到解決這個問題的辦法。我嘗試'aspx + portal'的原因是要有我們自己的文件夾結構,讓所有東西都在源代碼控制之下,並儘量減少從Kentico導出和導入模板(我們是一個同時工作的開發團隊)。 –