无法在剃刀foreach循环中使用Viewbag列表项目

无法在剃刀foreach循环中使用Viewbag列表项目

问题描述:

我有一个图像表链接到一个项目表(一个项目可以有很多图像)。它们由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); 

以上返回正确的网址,但他们都在用逗号分隔的一个字符串。

感谢任何帮助。

内部视图的循环,你应该使用循环变量:

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

ViewBag.imageFile是完整的列表,并且将永远是,即使在循环内。循环变量将在循环的每一回合中成为列表中的当前项目。

+0

完美。非常感谢! – ricky89

ViewBag不需要类型转换:

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