У меня возникла небольшая проблема при попытке связать общий список с ретранслятором. Тип, используемый в общем списке, на самом деле является структурой.
Ниже я построил базовый пример:
struct Fruit
{
public string FruitName;
public string Price; // string for simplicity.
}
protected void Page_Load(object sender, EventArgs e)
{
List<Fruit> FruitList = new List<Fruit>();
// create an apple and orange Fruit struct and add to List<Fruit>.
Fruit apple = new Fruit();
apple.FruitName = "Apple";
apple.Price = "3.99";
FruitList.Add(apple);
Fruit orange = new Fruit();
orange.FruitName = "Orange";
orange.Price = "5.99";
FruitList.Add(orange);
// now bind the List to the repeater:
repFruit.DataSource = FruitList;
repFruit.DataBind();
}
У меня есть простая структура для моделирования Fruit, у нас есть два свойства: FruitName и Price. Я начинаю с создания пустого общего списка типа «FruitList».
Затем я создаю два фрукта, используя структуру (яблоко и апельсин). Эти фрукты затем добавляются в список.
Наконец, я связываю общий список со свойством DataSource ретранслятора ...
Разметка выглядит так:
<asp:repeater ID="repFruit" runat="server">
<ItemTemplate>
Name: <%# Eval("FruitName") %><br />
Price: <%# Eval("Price") %><br />
<hr />
</ItemTemplate>
Я ожидаю увидеть название и цену фрукта. напечатано на экране, разделенное горизонтальным правилом.
В настоящий момент я получаю ошибку, касающуюся фактического связывания ...
**Exception Details: System.Web.HttpException: DataBinding: '_Default+Fruit' does not contain a property with the name 'FruitName'.**
I ' я даже не уверен, может ли это работать? Есть идеи?
Спасибо
Вам нужно изменить ваше публичное поле на публичное свойство.
Измените это: public string FruitName;
To:
public string FruitName { get; set; }
В противном случае вы можете сделать fruitName приватным и включить для него публичное свойство.
private string fruitName;
public string FruitName { get { return fruitName; } set { fruitName = value; } }
Вот ссылка с человеком, который столкнулся с той же проблемой, что и вы.
Ошибка сообщает вам все, что вам нужно знать. У вас есть общедоступные поля, а не свойства, определенные для FruitName и Price.