Показать изображение из базы данных в сетке Blazor

#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;