我正在visual studio中创建一个网站。我想在网页中检索并显示图像(来自sql server database的数据类型图像)。我有一个.cshtml页面,并获得以下代码来显示表格的一些字段。我能够显示除image数据类型列以外的所有内容。我正在使用剃刀语法。
我的代码
@{
var db1 = Database.Open("database1");
var selectQueryString = "SELECT * FROM Recipes ORDER BY date";
}
<div class="left-content">
<h5>Recent Posts</h5>
<table>
<tbody>
@foreach(var row in db1.Query(selectQueryString))
{
<tr>
<td>@row.image</td>
<td>@row.title</td>
<td>@row.description</td>
</tr>
}
</tbody>
</table>
这是我在网页上的输出:
Recent Posts
System.Byte[] testaspform ufegewu
System.Byte[] testone qfeyqo
System.Byte[] testtwo oadiufh
正如您所见,第一列显示System.Byte []而不是图像。
答案 0 :(得分:5)
您无法在不使用<img/>
标记的情况下在html文件中呈现图片。
您可以执行的操作是放置<img>
代码并在Controller中创建FileContentResult,并使用@Url.Action()
帮助程序在代码的来源中调用它...
==代码==
在您的HTML中:
<img src="@Url.Action("ProcessImage", routeValues: new { imageToProcess = row.image })" />
在您的控制器中:
public FileContentResult ProcessImage(byte[] imageToProcess)
{
return new FileContentResult(imageToProcess, "image/jpeg");
}
...
确保将ProccessImage方法放在与保存您所在视图的ActionMethod相同的控制器中,如果不是这样,则使用: < / p>
HTML:
<img src="@Url.Action("ProcessImage", routeValues: new { controller = "{CONTROLLER_NAME}", imageToProcess = row.image })" />
我没有构建上面给出的代码,因此您可能必须解决任何拼写错误/语法错误......