Member 13569764 Ответов: 1

Не удается отобразить изображение в ASP gridview, когда изображение равно нулю в базе данных


У меня есть два поля изображения в моей записи пользователя и я хочу сохранить null в моей базе данных когда когда либо изображение не предоставляется но при извлечении изображения в мой gridview появляется ошибка
Я хочу знать, как сохранить нулевое изображение и получить его в gridview без каких-либо проблем.

Что я уже пробовал:

<pre lang="c#">


<asp:TemplateField HeaderText="Photo">
                    <ItemTemplate>
                        <asp:Image ID="imgPhoto" runat="server" ImageUrl='<%# "data:Image/png;base64,"+Convert.ToBase64String((byte[])Eval("Photo")) %>' Height="50px" Width="50px" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="ID Copy">
                    <ItemTemplate>
                        <asp:Image ID="imgIDType" runat="server" ImageUrl='<%# "data:Image/png;base64,"+Convert.ToBase64String((byte[])Eval("IDCopy")) %>' Height="50px" Width="50px" />
                    </ItemTemplate>
                </asp:TemplateField>

1 Ответов

Рейтинг:
4

Afzaal Ahmad Zeeshan

Цитата:
Я хочу знать, как сохранить нулевое изображение и получить его в gridview без каких-либо проблем.
Вы можете сделать это, ничего не храня, что вы и делаете. Во-вторых, NULL-это значение по умолчанию контейнера, где вы ничего не предоставляете.

Если содержимое равно null, то проверьте наличие null и "не делайте" рендеринга изображения там, что-то вроде этого решит проблему и предотвратит ошибку,
if(record.Image != null) {
    // Render the image
} else {
    // What fallback to use?
}

Таким образом, Вы сможете визуализировать изображения только в том случае, если они доступны, и пропускать их, если они там недоступны.

Так как вы хотите сделать это в ASP.NET элементы управления веб-формами, вам нужно будет динамически управлять, когда элемент управления визуализируется, а затем визуализировать элемент управления. Это условие в ASP.NET веб-формы будут чем-то похожи на следующий код,
<div runat="server" visible='<%# Eval("ImageUrl") != DBNull.Value %>'>
    <asp:Image runat="server" ImageUrl='<%#Eval("ImageUrl") %>' />
</div>

Код был взят из [here](https://stackoverflow.com/questions/47254842/asp-net-repeater-hide-image-controls-if-url-img-null-into-db-and-show-video-cont), измените его в соответствии с вашими требованиями.

Наконец, я бы также рекомендовал вам не хранить изображения в базе данных. Вместо этого попробуйте сохранить их в файловой системе и только сохранить их имена в записи.