在网页中显示数据库中的图像

use*_*309 1 c# sql razor

我在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>
Run Code Online (Sandbox Code Playgroud)

这是我在网页上的输出:

Recent Posts
System.Byte[]   testaspform     ufegewu
System.Byte[]   testone     qfeyqo
System.Byte[]   testtwo     oadiufh
Run Code Online (Sandbox Code Playgroud)

如您所见,第一列显示System.Byte []而不是图像.

jcr*_*z92 5

如果不使用<img/>标记,则无法在html文件中呈现图像.

你可以做的是放置一个<img>标签并在你的Controller中创建一个FileContentResult,并使用@Url.Action()帮助器在你的标签的源代码中调用它...

== ==代码

在您的HTML中:

<img src="@Url.Action("ProcessImage", routeValues: new { imageToProcess = row.image })" />
Run Code Online (Sandbox Code Playgroud)

在您的控制器中:

public FileContentResult ProcessImage(byte[] imageToProcess)
{
    return new FileContentResult(imageToProcess, "image/jpeg");
}
Run Code Online (Sandbox Code Playgroud)

...

确保将ProccessImage方法放在与保存您所在视图的ActionMethod相同的控制器中,如果不是这样,则使用:

HTML:

<img src="@Url.Action("ProcessImage", routeValues: new { controller = "{CONTROLLER_NAME}", imageToProcess = row.image })" />
Run Code Online (Sandbox Code Playgroud)

我没有构建上面给出的代码,因此您可能必须解决任何拼写错误/语法错误...