2

タブをレンダリングするための 3 つのネストされたリピーターの構造があり、それらのタブの下に、見出しでグループ化された多数の項目があります。.NET 4.5 の厳密に型指定されたデータ コントロールを標準型でうまく使用してきましたが、.NET を使用するのはIEnumerableこれが初めてDictionary<T1,T2>です。それにもかかわらず、別のStackoverflow の質問で、 asを宣言することで aDictionaryを正常に使用しているのを見てきました。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();

これが私が得ている例外/スタックトレースです:イエロースクリーン

stringItemType を名前で解決できないため、ページを作成できないように見えます。問題は、私は自分でインテリセンスを取得する<%# Item.Key #%>ので、インテリセンス エンジンは文字列名で型を解決できますが、ランタイムは解決できませんか?

注: Sitecore.Data.Items.ItemItemType が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 に答える