1

列挙可能な匿名型を次のようなリピーターにバインドしたいと思います。

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

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

fooのプロパティe.Item.DataItemにアクセスするにはどうすればよいOnItemDataBoundですか?

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のですが、何か足りないのでしょうか?これは、強く型付けされたクラスを作成せずに可能ですか?

最初に操作する必要があるため、直接バインドすることはできませんmyEnumerablemyRepeater

4

1 に答える 1

3

匿名型のシーケンスをリピーターにバインドできますが、別のメソッドからその型にアクセスする必要がある場合は、適切なクラスを定義する必要があります。

匿名型は、型情報を保持する必要がない場合に、狭い範囲で役立ちます*。あなたの場合、それが必要なので、クラスを定義します。


*技術的には、タイプはもちろん固執します。コンパイラーはバックグラウンドでクラスを生成し、あなたが関わっている限り、言葉では言い表せない名前を付けています。しかし、それは裏で、舞台裏で、そしてボンネットの下で起こっています。初めの。

于 2013-02-22T06:42:59.617 に答える