将匿名类型绑定到中继器
本文关键字:中继器 绑定 类型 | 更新日期: 2023-09-27 18:00:35
我想将一个可枚举的匿名类型绑定到一个中继器,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
var obj = myEnumerable.Select(x => new { foo = x.bar, ... });
myRepeater.DataSource = obj;
myRepeater.DataBind();
}
如何访问OnItemDataBound
中e.Item.DataItem
的foo
属性?
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
绑定到myRepeater
,因为我必须首先操作它。
您可以将匿名类型的序列绑定到中继器,但如果您需要从另一个方法访问该类型,那么是时候定义一个合适的类了。
匿名类型在狭窄的范围内很有用,当您不需要类型信息时*。在您的情况下,您需要它,所以定义一个类。
*从技术上讲,这种类型当然会一直存在。编译器在幕后生成一个类,并为它命名,就您而言,这个名称是无法形容的。但这是在幕后、幕后和幕后发生的。内部。