目前我正在处理一个生成特定项目打印视图的页面。所以这意味着我不需要我的MainLayout中的所有东西,比如导航等。
出于这个原因,我创建了一个只有占位符的新Layout。 让我们称之为PrintLayout.aspx:
<sc:placeholder ID="PlPrint" runat="server" key="phPrintOutput"></sc:placeholder>
在后面的代码中,我有一个从项目中获取渲染的方法,但是我想要将它们动态复制到我的phPrintOutput占位符:
public void AddPresentationDetailsToPlaceHolder(Item item)
{
List<RenderingReference> renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, false).ToList();
foreach(RenderingReference r in renderings)
{
// How can I apply the renderings on the fly to my phPrintOutput Placeholder??
}
}
当然,每个子布局都保持当前的数据源是非常重要的。 任何帮助将不胜感激,谢谢大家
答案 0 :(得分:0)
您只需要将控件添加到占位符。为此,请参阅以下代码:
public void AddPresentationDetailsToPlaceHolder(Item item)
{
List<RenderingReference> renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, false).ToList();
foreach(RenderingReference r in renderings)
{
if(r.RenderingID == new ID("Rendering Id you want to be displayed on layout"))
{
this.PlPrint.Controls.Add(r.GetControl());
}
}
}
这会自动将渲染添加到布局中。