繁体   English   中英

将匿名类型绑定到中继器

[英]Bind Anonymous Type To Repeater

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

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

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

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM