我有一个类Foo
,它定义了属性Id
。课程Bar
继承自Foo
(class Bar : Foo
)。
如果我将List<Bar>
分配给Repeater.DataSource
,然后在Eval("Id")
中使用ItemTemplate
,则会引发以下异常:
DataBinding:'Bar'不包含名称为'Id'的属性。
有什么方法吗? Id
是Bar的有效属性,它只是在Foo上定义。
答案 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>