将匿名类型绑定到中继器

本文关键字:中继器 绑定 类型 | 更新日期: 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();
}

如何访问OnItemDataBounde.Item.DataItemfoo属性?

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,因为我必须首先操作它。

将匿名类型绑定到中继器

您可以将匿名类型的序列绑定到中继器,但如果您需要从另一个方法访问该类型,那么是时候定义一个合适的类了。

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


*从技术上讲,这种类型当然会一直存在。编译器在幕后生成一个类,并为它命名,就您而言,这个名称是无法形容的。但这是在幕后、幕后和幕后发生的。内部。