У меня есть модель с файлом изображения байтового массива, которую я хочу показать на странице.
Как я могу это сделать, не возвращаясь к базе данных?
Все решения, которые я вижу, используют ActionResult
для возврата к базе данных для получения изображения, но у меня уже есть изображение на модели ...
c#
asp.net-mvc
razor
DK ALT
источник
источник
Ответы:
Что-то вроде этого может сработать ...
Как упоминалось в комментариях ниже, пожалуйста, используйте вышеизложенное, зная, что, хотя это может ответить на ваш вопрос, это не может решить вашу проблему . В зависимости от вашей проблемы это может быть решением, но я бы не исключил полностью доступ к базе данных дважды.
источник
:)
Это сработало для меня
источник
Я рекомендую что-нибудь в этом роде, даже если изображение живет внутри вашей модели.
Я понимаю, что вы просите о прямом способе доступа к нему прямо из представления, и многие другие ответили на это и сказали вам, что не так с этим подходом, так что это просто еще один способ, который загрузит изображение асинхронно для вас и меня. думаю, это лучший подход.
Образец модели:
Пример метода в контроллере:
Посмотреть
источник
Один из способов - добавить это в новый класс C # или HtmlExtensions.
тогда вы можете сделать это в любом виде
источник
Если вы можете кодировать свои байты base-64, вы можете попробовать использовать результат в качестве источника изображения. В свою модель вы можете добавить что-то вроде:
И на ваш взгляд:
источник
Если изображение не такое уж большое и есть большая вероятность, что вы будете часто использовать его повторно, и если их у вас не слишком много, и если изображения не являются секретными (то есть сделка, если один пользователь потенциально может увидеть изображение другого человека) ...
Здесь много "если", так что есть большая вероятность, что это плохая идея:
Вы можете хранить байты изображения в
Cache
течение короткого времени и сделать тег изображения направленным на метод действия, который, в свою очередь, читает из кеша и выплевывает ваше изображение. Это позволит браузеру соответствующим образом кэшировать изображение.Это дает дополнительное преимущество (или это костыль?) Работы в старых браузерах, где встроенные изображения не работают в IE7 (или IE8, если размер превышает 32 КБ).
источник
Это модифицированная версия ответа Маноджа, которую я использую в проекте. Просто обновил, чтобы взять класс, атрибуты html и использовать TagBuilder.
Что затем можно использовать следующим образом:
источник
В вашей БД должен быть байт [].
Мой байт [] находится в моем объекте Person:
Вам нужно преобразовать ваш byte [] в строку. Итак, у меня в контроллере:
Затем в моем файле .cshtml моя модель является ViewModel. Вот что у меня есть:
Я использую это в своем файле .cshtml так:
"data: изображение / расширение файла изображения ; base64, {0}, строка вашего изображения "
Желаю, чтобы это кому-то помогло!
источник
Если вы хотите представить изображение, добавьте метод в качестве вспомогательного класса или в саму модель и разрешите методу преобразовывать изображение массива байтов в формат изображения, такой как PNG или JPG, а затем преобразовать в строку Base64. Как только вы это сделаете, привяжите значение base64 к вашему представлению в формате
"data: image / [расширение типа файла изображения] ; base64, [здесь идет ваша строка base64] "
Вышеуказанное присвоено атрибуту
img
тегаsrc
.Единственная проблема с этим - слишком длинная строка base64. Поэтому я бы не рекомендовал его для отображения нескольких моделей в представлении.
источник
Я создал вспомогательный метод, основанный на приведенном ниже ответе, и я очень рад, что этот вспомогательный метод может помочь как можно большему количеству людей.
С моделью:
Помощник:
Представление получает объект: ICollection, поэтому вам нужно использовать его в представлении в инструкции foreach:
источник