在一个页面中,我有一个带占位符的渲染,Offcanvas.cshtml
<div data-ads-offcanvas-id="@Model.Id" class="ads-offcanvas @Html.GetCssStyles()">
@{
<a data-ads-offcanvas-trigger-id="@Model.Id" class="ads-close-button" href="#0">X</a>
@Html.Sitecore().Placeholder(LayoutHelper.GetPlaceholder(Placeholders.AccordionSection, Model.Id))
}
并且在渲染中,我计划使用名为Modal.cshtml的占位符
放置另一个渲染<div data-ads-modal-container="@Model.Id" class="ads-modal-container">
<div class="ads-modal-dialog">
<div class="ads-close-box">
<a data-ads-modal-id="@Model.Id" href="#0">X</a>
</div>
<div class="ads-modal-content">
@Html.Sitecore().Placeholder(LayoutHelper.GetPlaceholder(Placeholders.AccordionSection, Model.Id))
</div>
</div>
所以看起来像:
-Offcanvas
+-Modal
++-Text content
当我将文本内容放入模态渲染中时,不会渲染内容。我猜测它只渲染了前几次渲染,并且在渲染变得高度嵌套时无法实现。
是否有解决方案将组件呈现给最大的孩子?
谢谢你们!
编辑: 这是GetPlaceholder的代码:
public static string GetPlaceholder(string name, Guid id)
{
return $"{name}_{id}";
}
答案 0 :(得分:1)
动态占位符比生成唯一占位符键要复杂一些。生成的密钥仍需要解析回Sitecore中定义的实际占位符。
查看Integrated Dynamic Placeholder module。
这将提供类似于当前实现的Html帮助程序:
@Html.Sitecore().DynamicPlaceholder("[Placeholder Name]")