将匿名类型绑定到中继器

时间:2013-02-22 06:36:59

标签: c# asp.net linq c#-4.0 asp.net-4.0

我想将一个可枚举的匿名类型绑定到这样的转发器:

protected void Page_Load(object sender, EventArgs e)
{
    var obj = myEnumerable.Select(x => new { foo = x.bar, ... });

    myRepeater.DataSource = obj;
    myRepeater.DataBind();
}

如何访问fooe.Item.DataItem的{​​{1}}属性?

OnItemDataBound

我不知道该向protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { myFunction(e.Item.DataItem.foo); } } 施放什么,我错过了什么?如果不创建强类型类,这可能吗?

我无法直接将e.Item.DataItem绑定到myEnumerable,因为我必须先操作它。

1 个答案:

答案 0 :(得分:3)

您可以将匿名类型的序列绑定到转发器,但是如果您需要从另一个方法访问该类型,则可以定义适当的类。

当您不需要类型信息时,匿名类型在狭义范围内很有用*。在你的情况下,你需要它,所以定义一个类。


*从技术上讲,类型当然会坚持下去。编译器在幕后生成一个类,并给它一个名称,就你而言是无法形容的。但这种情况发生在幕后,幕后和引擎盖下。内部。