Eval()和基类属性

时间:2010-10-22 21:40:06

标签: asp.net inheritance eval

我有一个类Foo,它定义了属性Id。课程Bar继承自Fooclass Bar : Foo)。

如果我将List<Bar>分配给Repeater.DataSource,然后在Eval("Id")中使用ItemTemplate,则会引发以下异常:

  

DataBinding:'Bar'不包含名称为'Id'的属性。

有什么方法吗? Id是Bar的有效属性,它只是在Foo上定义。

1 个答案:

答案 0 :(得分: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>