2010-08-04 34 views
0

我想呈現一些aspx頁面上的圖像。C#通用列表和ASP轉發器樂趣

錯誤我在下面的代碼中得到的是: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> 

感謝

回答

2

數據綁定語法不會下地幹活,它只能與性能工程。試着做此更改您的ImageThing類:

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

現在是一個屬性,現在你應該能夠獲得通過是使用<%#DataBinder.Eval的(的Container.DataItem,「文件名」)%模板>(或甚至更好,只是<%#Eval(「FileName」)%>)。

快樂編程!

+0

Dangit!你擊敗了我。 :) +1 – 2010-08-04 22:54:11

+0

多數民衆贊成 - 歡呼斯科特,和djacobson太:-) – 2010-08-04 22:56:22

0

你試過只是

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

謝謝,但得到了同樣的錯誤..我使用VS2010的網站項目針對.NET3.5 – 2010-08-04 22:54:45

+0

的其他人是對的。這必須是一個財產。 – marcind 2010-08-04 23:02:56

0

DataBinder.Eval是(我假設)使用反射來訪問ImageThing的FileName屬性。嘗試使FileName成爲一個實際屬性,而不僅僅是一個公共字段,如下所示:public string FileName { get; set; },它工作嗎?

(請注意,上面使用的自動實現屬性的語法只在C#3.0 +可用...)