我正在构建一个示例,即使用Northwind数据库。 我有一个视图,其中我显示了特定类别的所有产品,并使用ul生成带有图像的项目以及产品名称和价格。
并且已经明白,如果我右键单击我页面上的图像,我会得到 以下是图片网址。
这是我提供的操作方法,它只接受分类ID。 /图像/显示/ 1
我的ImageController中的动作方法如下:
//
// GET: /Image/Show
public ActionResult Show(int id)
{
var category = northwind.AllCategories().Single(c => c.CategoryID == id);
byte[] imageByte = category.Picture;
string contentType = "image/jpeg";
return this.Image(imageByte, contentType);
}
注意:图片是一个字节[]
然后我在我的视图中这样称呼它。 (产品是我的观点的模型)
但我仍然无法显示图像。
答案 0 :(得分:10)
改变行动
public FileContentResult Show(int id)
{
var category = northwind.AllCategories().Single(c => c.CategoryID == id);
byte[] imageByte = category.Picture;
string contentType = "image/jpeg";
return File(imageByte, contentType);
}
并发送产品实例以在View
中查看并尝试此操作<img src="<%: Url.Action("Show","Image",new { id = Model.Category.CategoryID }) %>" />
答案 1 :(得分:1)
尝试使用此方法:
public FileContentResult Show(int id)
{
var category = northwind.AllCategories().Single(c => c.CategoryID == id);
byte[] imageByte = category.Picture;
string contentType = "image/jpeg";
return File(imageByte, contentType);
}
如果您不使用该扩展名,这应该是基本方法。如果这工作,则错误是扩展的,如果这不起作用,则错误在其他地方 - 可能在路由中。还要检查Gustav的答案!
答案 2 :(得分:0)
我不确定这是否是您的问题,但我总是将操作和控制器名称大写:
<%= Url.Action( "Show", "Image", new { id = product.Category.CategoryID } ) %>
答案 3 :(得分:0)
原来我不得不使用anoynomus类型 '这样路由是/ Image / Show / 1,而不是/ Image / Show?CategoryID = 1。那当然需要将Northwind中的图像从位图更新为Jpeg。