【问题标题】:Bind Anonymous Type To Repeater将匿名类型绑定到中继器
【发布时间】:2013-02-22 06:36:59
【问题描述】:

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

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,因为我必须先对其进行操作。

【问题讨论】:

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


    【解决方案1】:

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

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      相关资源
      最近更新 更多