C#通用列表和ASP转发器乐趣

时间:2010-08-04 22:30:57

标签: c# asp.net webforms

我正在尝试在aspx页面上渲染一些图像。

错误我在下面的代码中遇到的是:DataBinding:'_ 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 个答案:

答案 0 :(得分:2)

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

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

现在它是一个属性,现在您应该可以使用&lt;%#DataBinder.Eval(Container.DataItem,“FileName”)%&gt; 通过模板访问(或者甚至更好) ,只需&lt;%#Eval(“FileName”)%&gt; )。

快乐编程!

答案 1 :(得分:0)

您是否尝试过简单

<asp:Repeater ID="Repeater1" runat="server"> 
  <ItemTemplate> 
    <%# Eval("FileName") %>
  </ItemTemplate> 
</asp:Repeater> 

答案 2 :(得分:0)

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

(请注意,上面使用的自动实现属性语法仅适用于C#3.0 + ...)