2012-09-03 10 views
11

Supponiamo di voler associare un tipo generico (qui: Dictionary<string, string>) a un ripetitore utilizzando il nuovo binding di dati fortemente scritto di ASP.NET 4.5.Dati fortemente vincolanti e generici?

Quindi dovrei mettere giù KeyValuePair<string, string> come proprietà ItemType del ripetitore.

<asp:Repeater id="rpCategories" runat="server" ItemType="System.Collections.Generic.KeyValuePair<string, string>"> 

C'è un problema evidente qui: Non posso usare < o > all'interno del testo ItemType!

Come si fa a fare questo? L'uso di generici è possibile in qualche modo con il nuovo modello di associazione dei dati?

+0

provato loro fuga con <e>? Qualsiasi messaggio errato? – sisve

+0

Non ho provato se funzionasse durante l'esecuzione della pagina, ma VS lo contrassegna come un errore e Intellisense non funziona neanche. – magnattic

+0

No, non funziona neanche. Il messaggio di errore è ovviamente che VS non è in grado di riconoscere il tipo. – magnattic

risposta

12

questo funziona per me:

codice dietro

protected void Page_Load(object sender, EventArgs e) 
     { 
      rpCategories.DataSource = new Dictionary<string, string>() 
      { 
       {"1", "item"},{"2", "item"},{"3", "item"}, 
      }; 
     rpCategories.DataBind(); 
     } 

Markup

<asp:Repeater ID="rpCategories" runat="server" ItemType="System.Collections.Generic.KeyValuePair`2[System.String,System.String]"> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text='<%# Item.Key %>'></asp:Label> 
     </ItemTemplate> 
    </asp:Repeater> 
+0

Grazie, funziona! – magnattic

+0

Questo ha risolto un problema che ho avuto per molto tempo, grazie. –