无法在Razor foreach循环中使用Viewbag列表项

时间:2014-07-12 21:33:28

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我有一个链接到Item表的Images表(一个Item可以有很多Images)。它们由项目ID链接。

我想在详细信息页面上返回项目的所有图像。我一直在尝试使用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    
}

以上将返回&#39; System.Collections.Generic.List`1 [System.String]&#39;对于每个ImageUrl。 我认为问题是对象是返回而不是实际的List项字符串值,但无法弄清楚如何将其转换为我需要的字符串。计划是编辑此foreach以为每个URL创建img链接。

我还有以下Viewbag(测试看我至少能够获得Urls):

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

以上内容返回正确的URL,但它们都在一个以逗号分隔的字符串中。

感谢任何帮助。

2 个答案:

答案 0 :(得分:10)

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

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

ViewBag.imageFile是完整的列表,即使在循环内也是如此。 image循环变量将是循环每个回合中列表中的当前项。

答案 1 :(得分:1)

ViewBag不需要输入类型:

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