我试图写将输出所发生的任何渲染的内容(即HTML)到特定的占位符中存在的方法。 我们的目标是在通过Sitecore.Data.Items.Item
和我感兴趣的占位符键,方法应该返回渲染的内容。
这个问题似乎是,没有建立页面的上下文,因此调用RenderControl()
在抛出一个空引用错误GetCacheKey()
的Sublayout的方法。
是任何人都知道的一种方式来呈现Sublayout或XSLT渲染程序?
下面是我到目前为止有:
private string GetPlaceholderContent(Item item, string placeHolder)
{
StringWriter sw = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(sw))
{
foreach (RenderingReference renderingReference in item.Visualization.GetRenderings(Sitecore.Context.Device, false))
{
if (renderingReference.Placeholder == placeHolder)
{
// This ensures we're only dealing with Sublayouts
if (renderingReference.RenderingItem.InnerItem.IsOfType(Sitecore.TemplateIDs.Sublayout))
{
var control = renderingReference.GetControl();
control.RenderControl(writer); // Throws null reference error in GetCacheKey()
}
}
}
}
return sw.ToString();
}