2016-11-25 65 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导出和导入模板(我们是一个同时工作的开发团队)。 –