代码之家  ›  专栏  ›  技术社区  ›  Dave Mateer

C#通用列表和ASP中继器

  •  0
  • Dave Mateer  · 技术社区  · 14 年前

    我正在尝试在aspx页面上呈现一些图像。

    我在下面代码中遇到的错误是:数据绑定:“\u Default+ImageThing”不包含名为“FileName”的属性。

        public class ImageThing
        {
            public string FileName;
        }
    
        private void DisplayThumbnailImages()
        {
            ImageThing imageThing1 = new ImageThing();
            ImageThing imageThing2 = new ImageThing();
            imageThing1.FileName = "asdf.jpg";
            imageThing2.FileName = "aaa.jpg";
    
            List<ImageThing> imagesToRender = new List<ImageThing>();
            imagesToRender.Add(imageThing1);
            imagesToRender.Add(imageThing2);
    
            Repeater1.DataSource = imagesToRender;
            Repeater1.DataBind();
        }
    

    以下是aspx:

           <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                <%#DataBinder.Eval(Container.DataItem, "FileName")%>
                </ItemTemplate>
            </asp:Repeater>
    

    谢谢

    3 回复  |  直到 14 年前
        1
  •  2
  •   Scott Mitchell    14 年前

    数据绑定语法不适用于字段,它只适用于属性。尝试对ImageThing类进行以下更改:

    public class ImageThing
    {
        public string FileName { get; set; }
    }
    

    <%#DataBinder.Eval(Container.DataItem,“文件名”)%> (或者更好,只是 <

    快乐编程!

        2
  •  0
  •   marcind    14 年前

    <asp:Repeater ID="Repeater1" runat="server"> 
      <ItemTemplate> 
        <%# Eval("FileName") %>
      </ItemTemplate> 
    </asp:Repeater> 
    
        3
  •  0
  •   Dan J    14 年前

    Eval(我假设)使用反射来访问ImageThing的FileName属性。尝试将FileName设置为实际属性,而不仅仅是公共字段,如下所示: public string FileName { get; set; } ,有效吗?