Asp.net 可以使用控制器操作返回图像或url字符串吗
我有一个需要显示的数据列表。每个项目都有一个从数据库中提取的图像字段 如果图像为空,则需要显示来自服务器的随机股票图像 我想做一些事情,比如:Asp.net 可以使用控制器操作返回图像或url字符串吗,asp.net,asp.net-mvc,image,razor,Asp.net,Asp.net Mvc,Image,Razor,我有一个需要显示的数据列表。每个项目都有一个从数据库中提取的图像字段 如果图像为空,则需要显示来自服务器的随机股票图像 我想做一些事情,比如: <img src='@Url.Action("GetImage", "MeetTheTeam", new { id = TeamMate.Id })' /> 但这不起作用,我无法调试到控制器中 这可能吗?您不能返回流或字符串Url.Action只会打印出该资源的Url,然后客户端浏览器将使用该Url获取图像。在现有图像的情况下,返
<img src='@Url.Action("GetImage", "MeetTheTeam", new { id = TeamMate.Id })' />
但这不起作用,我无法调试到控制器中
这可能吗?您不能返回流或字符串
Url.Action
只会打印出该资源的Url,然后客户端浏览器将使用该Url获取图像。在现有图像的情况下,返回一个图像文件流,浏览器会乐意将其渲染为图像,但在回退的情况下,返回的只是文本,浏览器也会尝试(但失败)将其解释为图像
你有两个选择:
内容
,而是返回重定向
,并将URL指向传递的图像。这将导致浏览器尝试加载该URL,从而生成良好的图像流你说它不起作用了:到底是怎么回事?结果如何?为什么你不能在控制器内调试呢?你的映像的正确类型是什么?如何在DB中存储?查找空值时可能会出错,但可能存在一个简单的空字符串。顺便说一下,您可以调试。我认为这也会导致编译时错误。我没有看到文件和ActionResult之间的隐式转换方法。数据库中的图像类型为image,可以为null。没有编译错误。当我说我不能调试时,我的意思是断点不会被击中。
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");
}
}