假设我要绑定一个泛型类型(这里:词典<字符串,字符串>
)使用新的ASP.NET 4.5直放站强类型数据绑定
然后,我将不得不放下 KeyValuePair<字符串,字符串>
作为直放站的ItemType属性
< ASP:直放站ID =rpCategories=服务器的ItemType =System.Collections.Generic.KeyValuePair<字符串,字符串>>
有一个明显的问题就在这里:我不能使用<
或>
内的ItemType的文字!
如何将一去吗?是使用泛型可能以某种方式与新的数据绑定模式?
解决方案这对我的作品:
$ C $后面
ç 保护无效的Page_Load(对象发件人,EventArgs的)
{
rpCategories.DataSource =新字典<字符串,字符串>()
{
{1,项目},{2,项目},{3,项目},
};
rpCategories.DataBind();
}
标记
< ASP:直放站ID =rpCategories=服务器的ItemType =System.Collections.Generic.KeyValuePair`2 [System.String,System.String]&GT ;
<的ItemTemplate>
< ASP:标签ID =标签1=服务器文本='<%#Item.Key%>'>< / ASP:标签>
< / ItemTemplate中>
< / ASP:直放站>
Suppose I want to bind a generic type (here: Dictionary<string, string>
) to a Repeater using the new ASP.NET 4.5 strongly typed data binding.
Then I would have to put down KeyValuePair<string, string>
as the ItemType Property of the Repeater.
<asp:Repeater id="rpCategories" runat="server" ItemType="System.Collections.Generic.KeyValuePair<string, string>">
There is an obvious problem here: I can not use <
or >
within the ItemType text!
How would one go about this? Is the use of generics possible somehow with the new data binding model?
解决方案This works for me:
Code behind
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>