Asp.net WebForm中的Sitecore色度类型(动态占位符)
我有一个中继器来生成动态占位符。在编辑模式下,当我为其选择usercontrol时,它会给我一个错误: “未捕获在尝试获取呈现html时加载了意外元素 来自服务器。希望最后一个标记是关闭脚本 marker16860737917440451880.js:5353 Sitecore.PageModes.ChromeType.Placeholder.Sitecore.PageModes.ChromeType.extend.\u frameLoaded“ 请帮助我,tks和最好的问候 它喜欢这个问题: 但我在web应用程序中编写代码 这是ascx文件Asp.net WebForm中的Sitecore色度类型(动态占位符),asp.net,dynamic,sitecore,placeholder,sitecore7,Asp.net,Dynamic,Sitecore,Placeholder,Sitecore7,我有一个中继器来生成动态占位符。在编辑模式下,当我为其选择usercontrol时,它会给我一个错误: “未捕获在尝试获取呈现html时加载了意外元素 来自服务器。希望最后一个标记是关闭脚本 marker16860737917440451880.js:5353 Sitecore.PageModes.ChromeType.Placeholder.Sitecore.PageModes.ChromeType.extend.\u frameLoaded“ 请帮助我,tks和最好的问候 它喜欢这个问题:
<asp:Repeater ID="rpAccordion" runat="server" OnItemDataBound="rpAccordion_OnItemDataBound">
<ItemTemplate>
<asp:Label runat="server" ID="lblPageHeading" Text='<%#DataBinder.Eval(Container.DataItem,"Name") %>'></asp:Label>
<div>
<p>
<sc:Placeholder ClientIDMode="Static" ID="Accordion_dynamic_1" runat="server" Key="phMenuAccordion_dynamic_1" />
</p>
</div>
</ItemTemplate>
</asp:Repeater>
我让这些动态占位符在占位符设置中可编辑我想我们需要更多的信息,比如您正在使用的代码的一个最小示例。它类似于此问题:但我在web应用程序中编写代码
protected void Page_Load(object sender, EventArgs e)
{
Item source = GetItem();
if (source != null && source.GetChildren().Count > 0)
{
var filterSource = source.GetChildren().Where(s => s.Version != null && s.Versions.Count > 0).ToList();
if (filterSource.Count > 0)
{
rpAccordion.DataSource = filterSource;
rpAccordion.DataBind();
}
}
}
protected void rpAccordion_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
try
{
var currentItem = (Item)e.Item.DataItem;
if (currentItem != null && e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var placeHolderAccordion = e.Item.FindControl("Accordion_dynamic_1") as Placeholder;
if (placeHolderAccordion != null)
{
placeHolderAccordion.ID = "Accordion_dynamic_" + Convert.ToInt32(e.Item.ItemIndex + 1);
placeHolderAccordion.Key = "Accordion_dynamic_" + Convert.ToInt32(e.Item.ItemIndex + 1);
}
}
}
catch (Exception ex)
{
Log.Error(ex.Message, ex, this);
}
}