将struct类型的通用列表绑定到Repeater

Dal*_*Dal 7 c# asp.net generics repeater list

我试图将通用列表绑定到转发器时遇到了一些问题.泛型列表中使用的类型实际上是一个结构.

我在下面构建了一个基本示例:

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();

}
Run Code Online (Sandbox Code Playgroud)

我有一个简单的结构来模拟Fruit,我们有两个属性,分别是FruitName和Price.我首先创建一个类型为'FruitList'的空通用列表.

然后我使用结构(苹果和橙色)创建两个水果.然后将这些水果添加到列表中.

最后,我将通用列表绑定到转发器的DataSource属性...

标记看起来像这样:

<asp:repeater ID="repFruit" runat="server">
<ItemTemplate>
    Name: <%# Eval("FruitName") %><br />
    Price: <%# Eval("Price") %><br />
    <hr />
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

我希望看到屏幕上印有水果名称和价格,由横向规则分隔.

目前我收到与实际绑定有关的错误...

**Exception Details: System.Web.HttpException: DataBinding: '_Default+Fruit' does not contain a property with the name 'FruitName'.**
Run Code Online (Sandbox Code Playgroud)

我甚至不确定这是否可行?有任何想法吗?

谢谢

Jon*_*onH 9

您需要将公共领域更改为公共财产.

改变这个: public string FruitName;

至:

public string FruitName { get; set; }
Run Code Online (Sandbox Code Playgroud)

否则,您可以将fruitName设为private并为其包含公共属性.

private string fruitName;

public string FruitName { get { return fruitName; } set { fruitName = value; } }
Run Code Online (Sandbox Code Playgroud)

以下是与您遇到同样问题的人的链接.