2010-10-22 4 views
1

У меня есть класс Foo, который определяет свойство Id. Класс Bar унаследовал от Foo (class Bar : Foo).Свойства Eval() и базового класса

Если я назначить List<Bar> к Repeater.DataSource затем использовать Eval("Id") в ItemTemplate следующее исключение:

DataBinding: «Bar» не содержит свойство с именем «Id».

Любой способ обойти это? Id является действительным свойством Bar, это просто определено на Foo.

ответ

1

Это прекрасно работает для меня. Может быть, у вас проблема видимости? Что такое модификатор доступа на Id?

Вот мой источник:

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     List<Bar> bars = new List<Bar>(); 
     bars.Add(new Bar()); 
     bars.Add(new Bar()); 
     bars.Add(new Bar()); 

     Repeater1.DataSource = bars; 
     Repeater1.DataBind(); 
    } 
} 

public class Foo 
{ 
    public Foo() 
    { 
     this.FooProp = "FooPropValue"; 
    } 

    public string FooProp { get; set; } 
} 

public class Bar : Foo 
{ 
    public Bar() 
    { 
     this.BarProp = "BarPropValue!"; 
    } 

    public string BarProp { get; set; } 
} 

И в ASPX у меня есть:

<asp:Repeater ID="Repeater1" runat="server"> 
<ItemTemplate><%# Eval("FooProp")%></ItemTemplate> 
</asp:Repeater> 
+0

Отлично, я чувствую себя идиотом. В моей защите это был конец недели. :) –

Смежные вопросы