【问题标题】:Show Image from database in a Blazor grid在 Blazor 网格中显示来自数据库的图像
【发布时间】:2022-01-09 06:15:49
【问题描述】:

我在数据网格中显示/显示 Sql 图像时遇到问题。 我使用的代码是:

    <tbody>
    @foreach (var e in @EntitiesResult.Entities)
    {
        <tr class="col-sm">
            <td class="text-sm-center">
                <img src="@(@e.Image != null ? (() => GetImage(e.Image)) : "img/no-camera-sign.jpg")" alt="" width="75">
            </td>
            <td class="text-sm-left">@e.IsahPrimKey</td>
            <td class="text-sm-left">@e.ExtraInfo</td>
            <td class="hidden-xs hidden-sm">@e.IsahTableName</td>
        </tr>
    }
</tbody>

所以有一个表格列显示图像。这个想法是,如果数据库中没有任何图像存储在特定行上,则显示默认图像(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;
        }
    }

问题是这个函数永远不会被触发,我不明白。如果 Image 为空,则显示虚拟图像。这样就可以了,但是永远不会触发 GetImage 函数。 有人可以解释一下如何做到这一点...

【问题讨论】:

  • 如果 GetImage() 从未被触发,则 e.Image 为空。在代码中添加一些断点可能是确定问题的最佳方法。

标签: database image datagrid blazor


【解决方案1】:

这段代码是错误的

&lt;img src="@(@e.Image != null ? (() =&gt; GetImage(e.Image)) : "img/no-camera-sign.jpg")" alt="" width="75"&gt;

您是说:如果 e.Image 不为空,则返回一个 lambda,如果调用它,将返回一个图像...但没有什么可以调用它,它可能只是得到 ToStringed。

尝试只调用 GetImage 方法

&lt;img src="@(e.Image != null ? GetImage(e.Image) : "img/no-camera-sign.jpg")" alt="" width="75"&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多