Вообще, метод RenderWebPart
пишет в поток вывода текстовую разметку и ресурсы должны подгружаться браузером отдельно, например с использованием того же HttpHandler
'а. Конечно, в описанной архитектуре это не очень удобно. Если есть возможность переделать, то желательно хранить картинку на диске, а в базе хранить только путь. Тогда в методе RenderWebPart
достаточно будет генерировать теги с указанием пути
а дальше браузер сам запросит файл у сервера. В крайнем случае, если нельзя переделать на файлы, хотя бы хранить картинку в отдельном поле таблицы базы, чтобы хендлеру не пришлось доставать её из документа.
Есть еще варианты встраивания данных картинки прямо в текстовый HTML, но такие подходы работают не во всех браузерах:
1 Использование src=data
Данные файла картинки можно встроить в текстовом формате в атрибут src
:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D" alt="" />
Получается вот что:
Недостаток: не работает в IE до версии 8.
2 Конвертация картинки в HTML
Метод для особых извращенцев, но работает даже в IE. Суть — картинка конвертируется в набор HTML-тегов, которые при визуальном формировании в браузере выглядят как исходное изображение. Вот пример. Но такая конвертация, наверное, может занять больше времени чем чтение из базы)