我有一个需要显示的数据列表。每个项目都有一个从数据库中提取的图像字段。
如果图像为空,则需要从服务器显示随机库存图像。
我想做类似的事情:
<img src='@Url.Action("GetImage", "MeetTheTeam", new { id = TeamMate.Id })' />
然后在控制器中:
public ActionResult GetImage(int id)
{
var item = team.Where(teammate => teammate.Id == id).SingleOrDefault();
if (item.Image != null)
{
return File(item.Image, "image/jpg");
}
else
{
return Content(AppSettings.AppRoot + "content/images/MeetTheTeam/v2/gray-block" + random.Next(1, 14) + ".jpg");
}
}
但这不起作用,我无法调试到控制器......
这甚至可能吗?
答案 0 :(得分:1)
您无法返回流或字符串。 Url.Action
只打印出此资源的URL,然后客户端的浏览器将使用该URL来获取图像。对于现有图像,您返回一个图像文件流,浏览器将其作为图像快乐呈现,但在回退的情况下,您只返回文本,浏览器也会尝试(并失败)解释为图像。
您有两种选择:
不是返回Content
,而是返回Redirect
,其中包含传递图像的网址。这将导致浏览器尝试加载该URL,从而产生良好的图像流。
从文件系统中打开后备图像,然后像处理从数据库中加载的图像一样返回流。