#database #image #datagrid #blazor
#База данных #изображение #сетка данных #блейзор
Вопрос:
У меня возникли проблемы с отображением/отображением изображения Sql в сетке данных. Код, который я использую, таков:
lt;tbodygt; @foreach (var e in @EntitiesResult.Entities) { lt;tr class="col-sm"gt; lt;td class="text-sm-center"gt; lt;img src="@(@e.Image != null ? (() =gt; GetImage(e.Image)) : "img/no-camera-sign.jpg")" alt="" width="75"gt; lt;/tdgt; lt;td class="text-sm-left"gt;@e.IsahPrimKeylt;/tdgt; lt;td class="text-sm-left"gt;@e.ExtraInfolt;/tdgt; lt;td class="hidden-xs hidden-sm"gt;@e.IsahTableNamelt;/tdgt; lt;/trgt; } lt;/tbodygt;
Итак, есть столбец таблицы с изображениями. Идея заключается в том, что если в базе данных нет изображения, хранящегося в определенной строке, то отображается изображение по умолчанию (no_camera_sign.jpg). Но если значение e.image не равно нулю, то вызывается функция getImage. Эта функция называется:
protected string GetImage(byte[]? image) { if (image != null) { return $"data:image/png;base64, {Convert.ToBase64String(image)}"; } else { return string.Empty; } }
Проблема в том, что эта функция никогда не запускается, и я не понимаю. Если изображение равно нулю, то отображается фиктивное изображение. Так что это работает, но функция getImage никогда не запускается. Может кто-нибудь, пожалуйста, объяснить, как это сделать…
Комментарии:
1. Если getImage() никогда не запускается, то из этого следует, что e. Изображение равно нулю. Добавление некоторых точек останова в код может быть лучшим способом определить проблему.
Ответ №1:
Этот код просто неправильный
lt;img src="@(@e.Image != null ? (() =gt; GetImage(e.Image)) : "img/no-camera-sign.jpg")" alt="" width="75"gt;
Вы говорите: если e.Image не является нулевым, верните лямбду, которая, если что — то ее вызовет, вернет изображение… но это никак не назовешь, и, вероятно, это просто начинает раздражать.
Попробуйте просто вызвать метод getImage
lt;img src="@(e.Image != null ? GetImage(e.Image) : "img/no-camera-sign.jpg")" alt="" width="75"gt;