1

我在我的 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>
4

1 回答 1

1

最可能的原因有两个。

  • 您已在项目中移动控件
  • 您的 web.config 中可能没有足够具体的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节点,但它实际上会带来更多的整体稳定性。

于 2013-04-17T18:12:34.317 回答