我在我的Sitecore实例中添加了一个Xaml控件,并且由于某种原因它返回了Only one <CodeBeside> tag is allowed on each page
异常。问题是应用程序中只有一个CodeBeside标记(见下文)。我甚至试图删除一个CodeBeside标签,我仍然有同样的问题。我该如何解决这个问题?
<control xmlns:def="Definition"
xmlns="http://schemas.sitecore.net/Visual-Studio-Intellisense">
<doThingy>
<FormDialog Icon="Business/32x32/messages.png"
Header="Thingy-doer"
Text="Double-click each comment to edit or delete."
OKButton="Close"
CancelButton="false">
<CodeBeside Type="Name.space.layout.layouts.Xaml.Dothingy.CommentsDisplayCodeBeside,CHLIHB.Web" />
<div>Showing comments from between these dates:</div>
<div style="outer-datepicker">
<DatePicker ID="DateLowerBound"
Width="50%" />
<DatePicker ID="DateUpperBound"
Width="50%" />
<div style="clear:both" />
</div>
<div>
<Scrollbox>
<Listview ID="ThingyListItems"
View="Details"
Width="100%"
Background="white"
DblClick="nm:doubleclick"
Click="nm:headerclick">
<ListviewHeader id="IndexHeader">
<ListviewHeaderItem Name="userName"
Header="User Name" />
<ListviewHeaderItem Name="datePosted"
Header="Date Posted" />
<ListviewHeaderItem Name="contentTitle"
Header="Article Title" />
<ListviewHeaderItem Name="commentExcerpt"
Header="Excerpt" />
</ListviewHeader>
</Listview>
</Scrollbox>
</div>
</FormDialog>
</doThingy>
</control>
答案 0 :(得分:1)
最可能的原因是两倍。
controlSources
节点,而是找到旧版本的Xaml控件。似乎有时Sitecore将忽略找到的第二个控件,有时它会尝试解析两者(因此异常)。请记住,无法保证Visual Studio将清除移动源后遗留下来的Xaml文件。这意味着一般来说,这是一个糟糕的政策,应该避免:
<source mode="on" namespace="Sitecore.Web.UI.XmlControls"
folder="/layout" deep="true" />
而是确保您指向特定文件夹,并且(理想情况下)具有deep="false"
:
<source mode="on" namespace="Sitecore.Web.UI.XmlControls"
folder="/layout/layouts/Xaml/Dothingy" deep="false" />
这可能意味着包含更多source
个节点,但它实际上会带来更多稳定性。