2012-09-18 32 views
0

我正在使用listview來顯示我的網站的所有用戶的列表。用戶可以上傳多個圖像,因此當我使用實體框架生成模型時,會創建2個實體:用戶和圖像。用戶對圖像集合具有導航屬性,圖像對於單個用戶具有導航屬性。如何顯示導航屬性集合的第一個元素在我的asp.net listview(使用實體框架)中?

我現在試圖在我的listview 1中顯示用戶上傳的圖像(如果他上傳了任何圖像)。顯示哪一個並不重要。

我創建了一個EntityDataSource,並且在其include屬性中添加了「Images」。然後,我將我的列表視圖分支到數據源。通常情況下,顯示導航屬性的內容,我使用類似

<asp:Label ID="fn" runat="server" Text='<%# Eval("Users.Firstname") %>' /> 

然而,因爲它是一個集合,我想要顯示的列,我可以用這樣的事情?如果是這樣,那麼用什麼方法來管理用戶沒有上傳任何圖像的情況呢?

<asp:image ID="img" runat="server" ImageUrl='<%# Eval("Images[0].path") %>' AlternateText="" />

回答

0

Eval使用反射,它有它的更復雜的條款限制。你不應該害怕直接鑄造的:

<asp:image ID="img" runat="server" 
    ImageUrl='<%# ((YourObjectType)Container.DataItem).Images[0].path") %>' 
    AlternateText="" /> 

注意的是,爲了轉換爲YourObjectType你可能要一個<@Import >指令添加到頁面(或選擇使用一個完整的類型名稱,包括命名空間)。