Так что обычно в ASP. NET Core MVC мы создадим специальный метод действия, единственная задача которого - вернуть изображение.
public ActionResult ProductImage(int id)
{
var fileInfo = //get this object from the database based on the id, looks like you already know how
return File(fileInfo.TheByteArray, fileInfo.MimeType);
}
В приведенном выше коде я при условии, что у вас есть объект fileInfo, который содержит байтовый массив, представляющий изображение, и MIME-тип изображения (если у вас есть только расширение файла, вы можете просто реализовать метод для преобразования от расширения до типа MIME). Вероятно, у вас будут разные имена свойств, соответственно измените код. Этот метод действия собирается записать изображение непосредственно в ответ, причем тип MIME передается в качестве типа контента.
Нажав этот URL-адрес для изображения, вы сможете увидеть изображение в браузере. Тогда единственный оставшийся шаг - установить элемент изображения на странице Razor так, чтобы он указывал на это местоположение. Я предполагаю, что ваша модель имеет свойство FileId, представляющее файл, который вы хотите, чтобы пользователь увидел.
<img src="/MyController/ProductImage/@Model.FileId" />
Обратите внимание, что получение изображения с сервера и его возврат при каждом посещении этой страницы может быть не супер эффективный, так что вы можете посмотреть различные варианты кэширования .