Eval () и свойства базового класса - PullRequest
1 голос
/ 23 октября 2010

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

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

Привязка данных: 'Bar' не содержит свойство с именем 'Id'.

Есть ли способ обойти это?Id является допустимым свойством Bar, оно только что определено в Foo.

1 Ответ

1 голос
/ 23 октября 2010

У меня отлично работает.Может быть, у вас есть проблемы с видимостью?Что такое модификатор доступа для свойства 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>
...