Я создаю веб-сайт в визуальной студии. Я хочу получить и отобразить изображение (изображения типа данных из базы данных SQL Server) на веб-странице. У меня есть.cshtml-страница и получил следующий код для отображения некоторых полей таблицы. Я могу отображать все, кроме столбца типа данных изображения. Я использую синтаксис бритвы.
МОЙ код
@{
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 [] вместо изображения.
Вы не можете отображать изображение в html файле без использования <img/>
.
Что вы можете сделать, это разместить <img>
и создать 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, который отображает представление, в котором вы находитесь, если это не так, а затем используйте:
HTML:
<img src="@Url.Action("ProcessImage", routeValues: new { controller = "{CONTROLLER_NAME}", imageToProcess = row.image })" />
Я не создал код, приведенный выше, так что вам, возможно, придется разрешить любую ошибку опечатки/синтаксиса...