在ASP中显示Base64字符串.显示数据表格

本文关键字:显示 数据 数据表 表格 字符串 Base64 ASP | 更新日期: 2023-09-27 18:07:54

我有使用asp.net显示信息的任务,这需要字符串字段,我很容易实现,以及与信息一起的图像。我试着在我的网格视图中使用一个图像字段来显示一张图片,它在我有一个url的图像中工作得很好。然而,我一直在试图找出一种方法来显示存储为base64字符串的图像。我尝试了各种方法来尝试和显示图像,例如使用模板字段,尝试将图像URL设置为在html中显示base64的字符串,甚至将base64转换为似乎不起作用的图像。现在我正试图手动添加数据,使用数据表和手动创建行。如果有人知道我如何在图像视图中使用base64字符串,我会非常感激。

下面是我创建的gridview的代码。

<asp:GridView ID="GridView1" HeaderStyle-BackColor="#FF0000" HeaderStyle-ForeColor="White"
        runat="server" AutoGenerateColumns="false" enabled="false">
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-Width="30" />
            <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="30" />
            <asp:BoundField DataField="Account" HeaderText="Account Number" ItemStyle-Width="30" />
            <asp:ImageField DataImageURLField="ImageURL" HeaderText="Image" />
        </Columns>
</asp:GridView>

这是我现在在gridview中创建条目的c#代码。

DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[4] { new DataColumn("Id", typeof(int)),
                        new DataColumn("Name", typeof(string)),
                        new DataColumn("Account",typeof(string)),
                        new DataColumn("ImageURL",typeof(string))});
        string URL = "data:image/jpg;base64,";
        string encodedString = //base64 string here

        URL += encodedString;
        dt.Rows.Add(1, "Steve", "************1111", URL);
        GridView1.DataSource = dt;
        GridView1.DataBind();

在ASP中显示Base64字符串.显示数据表格

令人难以置信的黑客,但它工作:

GridView:

<asp:GridView ID="GridView1" HeaderStyle-BackColor="#FF0000" HeaderStyle-ForeColor="White"
    DataSource='<%# GetData() %>' runat="server" AutoGenerateColumns="false" enabled="false">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-Width="30" />
        <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="30" />
        <asp:BoundField DataField="Account" HeaderText="Account Number" ItemStyle-Width="30" />
        <asp:BoundField DataField="ImageURL" HeaderText="Image" HtmlEncode="false" />
    </Columns>
</asp:GridView>

后台代码:

public DataTable GetData()
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[4] { new DataColumn("Id", typeof(int)),
                new DataColumn("Name", typeof(string)),
                new DataColumn("Account",typeof(string)),
                new DataColumn("ImageURL",typeof(string))});
    string URL = "data:image/jpeg;base64,";
    string encodedString = ""; // base64-encoded image data goes here
    URL += encodedString;
    URL = $"<img src='"{URL}'">";
    DataRow dr = dt.NewRow();
    dr["ID"] = 1;
    dr["Name"] = "Steve";
    dr["Account"] = "************1111";
    dr["ImageUrl"] = URL;
    dt.Rows.Add(dr);
    return dt;
}