1

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

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

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

如何访问in的foo属性?e.Item.DataItemOnItemDataBound

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

4

1 回答 1

3

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

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


*从技术上讲,这种类型当然会存在。编译器在幕后生成一个类,并给它起一个对你来说难以形容的名字。但这发生在幕后、幕后和幕后。在内部。

于 2013-02-22T06:42:59.617 回答