C# 将列表数据绑定到GridView。GridView可以';我找不到我的财产!

C# 将列表数据绑定到GridView。GridView可以';我找不到我的财产!,c#,data-binding,gridview,ienumerable,C#,Data Binding,Gridview,Ienumerable,给定: 我有一门课: 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 var list=SomeFunct

给定:

我有一门课:

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
var list=SomeFunction();//返回一个有效的列表
gvMyList.DataSource=列表;
gvMyList.DataBind();//这会引发异常
以及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
列表,那么我应该可以使用
Eval(“Field1”)
Eval(“Field2”)
访问
MyObject
的属性。这里不是这样。相反,我会抛出一个异常:


数据绑定:“MyObject”不包含名为“Field1”的属性。

您的类包含字段,而不是属性;您必须这样定义属性:

 class MyObject
    {
      public string Field1 { get; set; }
      public string Field2 { get; set; }
    }

您的类包含字段,而不是属性;您必须这样定义属性:

 class MyObject
    {
      public string Field1 { get; set; }
      public string Field2 { get; set; }
    }