我有一个链接到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,但它们都在一个以逗号分隔的字符串中。
感谢任何帮助。
答案 0 :(得分:10)
在视图的循环内部,您应该使用循环变量:
@foreach (var image in ((List<string>)ViewBag.imageFile))
{
@image
}
ViewBag.imageFile
是完整的列表,即使在循环内也是如此。 image
循环变量将是循环每个回合中列表中的当前项。
答案 1 :(得分:1)
ViewBag
不需要输入类型:
@foreach (var image in ViewBag.imageFile))
{
@image
}