Дано:
У меня есть класс:
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
И элемент управления GridView на странице aspx:
<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
список, то у меня будет доступ к свойствам MyObject
с помощью Eval("Field1")
или Eval("Field2")
. Это не тот случай, здесь. Вместо этого я получаю исключение:
DataBinding: 'MyObject' does not contain a property with the name 'Field1'.