2

我有一个由三个嵌套转发器组成的结构来呈现一个选项卡,然后在这些选项卡下,一些按标题分组的项目。我一直在标准IEnumerable类型上成功使用 .NET 4.5 中的强类型数据控件,但这是我第一次使用Dictionary<T1,T2>. 尽管如此,我已经看到另一个Stackoverflow 问题通过声明 as 成功地Dictionary使用a as 。DataSourceItemTypeKeyValuePair<T1, T2>

标记:

<asp:Repeater ID="rptTabs" runat="server"
    ItemType="System.Collections.Generic.KeyValuePair<System.String, System.Collections.Generic.Dictionary<System.String, System.Collections.Generic.List<Sitecore.Data.Items.Item>>>">
        <ItemTemplate>
           <%# Item.Key %>
           <%-- ... more repeaters under but they are commented out for now as it's the outer on that is failing --%>
        </ItemTemplate>
</asp:Repeater>

代码隐藏:

var myDatasource = new Dictionary<string, Dictionary<string, List<Item>>>();
// add some items
rptTabs.DataSource = myDatasource;
rptTabs.DataBind();

这是我得到的异常/堆栈跟踪:黄屏

似乎无法构建页面,因为它无法按string名称解析 ItemType。问题是,我得到了智能感知,<%# Item.Key #%>所以智能感知引擎可以通过字符串名称解析类型,但运行时不能?

注意:我怀疑它的Sitecore.Data.Items.Item类型失败,因为我之前在 IEnumerable 中使用过它,这意味着 ItemType 是Sitecore.Data.Items.Item.

任何帮助,将不胜感激!

4

1 回答 1

0

从我所看到的 ItemType 属性不喜欢<尖括号>。我读过的答案表明,用各自的方括号替换所有尖括号似乎是可行的。

替换以下内容:

  • <[
  • >]

所以你得到:

ItemType="System.Collections.Generic.KeyValuePair[System.String, System.Collections.Generic.Dictionary[System.String, System.Collections.Generic.List[Sitecore.Data.Items.Item]]]

我遇到了一个类似的错误。但是,就我而言,我发现我试图<%# Item.Property %>HeaderTemplate.

于 2013-04-30T15:11:04.170 回答