2014-07-12 67 views
2

我有一個圖像錶鏈接到一個項目表(一個項目可以有很多圖像)。它們由Item Id鏈接。無法在剃刀foreach循環中使用Viewbag列表項目

我想返回詳細信息頁面上某個項目的所有圖像。我一直試圖使用Viewbag來實現這個(下圖)。

控制器:

ViewBag.imageFile = (from f in storeDB.Images 
           where f.ItemId == id 
           select f.ImageURL).ToList();  

檢視:

@foreach (var image in ((List<string>)ViewBag.imageFile)) 
{ 
    @ViewBag.imageFile  
} 

上面將返回 'System.Collections.Generic.List`1 [System.String]' 每個的ImageUrl。 我相信問題是一個對象正在返回,而不是實際的列表項字符串值,但無法弄清楚如何將其轉換爲我需要的字符串。計劃是編輯這個foreach爲每個URL創建一個img鏈接。

我也有以下Viewbag(測試,看看我能至少獲得網址):

ViewBag.imageURL = string.Join(",", ViewBag.imageFile); 

以上返回正確的網址,但他們都在用逗號分隔的一個字符串。

感謝任何幫助。

回答

10

內部視圖的循環,你應該使用循環變量:

@foreach (var image in ((List<string>)ViewBag.imageFile)) 
{ 
    @image 
} 

ViewBag.imageFile是完整的列表,並且將永遠是,即使在循環內。循環變量將在循環的每一回閤中成爲列表中的當前項目。

+0

完美。非常感謝! – ricky89

1

ViewBag不需要類型轉換:

@foreach (var image in ViewBag.imageFile)) 
    { 
     @image 
    }