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