我正在尝试在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>
由于
答案 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 + ...)