无法在剃刀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
是完整的列表,并且将永远是,即使在循环内。循环变量将在循环的每一回合中成为列表中的当前项目。
答
ViewBag
不需要类型转换:
@foreach (var image in ViewBag.imageFile))
{
@image
}
完美。非常感谢! – ricky89