问题描述
|
鉴于:
我有一堂课:
class MyObject
{
public string Field1;
public string Field2;
}
和以下代码:
var list = SomeFunction(); // returns a valid List<MyObject>
gvMyList.DataSource = list;
gvMyList.DataBind(); // THIS THROWS AN EXCEPTION
在aspx页面中还有一个GridView控件:
<asp:GridView ID=\"gvMyList\" AutoGenerateColumns=\"false\" runat=\"server\">
<Columns>
<asp:TemplateField HeaderText=\"Field 1\">
<ItemTemplate>
<asp:Label ID=\"lblCourse\" runat=\"server\" Text=\'<%# Eval(\"Field1\") + \" \" + Eval(\"Field2\") %>\'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
问题:
所以我知道,如果某个东西实现了IEnumerable
,那么它可以传递给DataSource
属性。据我所知,如果您向列表传递DataSource
,那么我应该可以使用Eval(\"Field1\")
或to8ѭ访问MyObject
的属性。事实并非如此。相反,我抛出了一个异常:
DataBinding: \'MyObject\' does not contain a property with the name \'Field1\'.
解决方法
您的课程包含字段,而不是属性;您必须通过以下方式定义属性:
class MyObject
{
public string Field1 { get; set; }
public string Field2 { get; set; }
}