C# ASP.NET将二进制图像绑定到中继器中的图像控件

C# ASP.NET将二进制图像绑定到中继器中的图像控件,c#,asp.net,C#,Asp.net,我有这样一个简单的中继器: <asp:Repeater ID="repImages" runat="server" OnItemDataBound="repImages_ItemDataBound"> <ItemTemplate> <asp:Image ID="Image1" runat="server" /> </ItemTemplate> </asp:Repeater>

我有这样一个简单的中继器:

<asp:Repeater ID="repImages" runat="server" OnItemDataBound="repImages_ItemDataBound">
        <ItemTemplate>
            <asp:Image ID="Image1" runat="server" />
        </ItemTemplate>
    </asp:Repeater>
void BindImages()
    {
        string sql = @"SELECT A.*, B.* FROM ImageMetaData A
INNER JOIN ImageData B
ON A.ImageId = B.ImageId
WHERE A.CapId = @capid AND width = 250";
        SqlQuery q = new SqlQuery("imagelibrary", sql);
        q.Parameters.AddWithValue("@capid", Convert.ToInt32(ddlVehicle.SelectedValue));
        DataTable dt = q.OpenDataTable();
        repImages.DataSource = dt;
        repImages.DataBind();
    }
我绑定到的datatable有一个字段,其中包含一个作为字节数组的图像。如何使图像控件显示以下内容:

 protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Image img = (Image)e.Item.FindControl("Image1");
        if (img != null)
        {
            img.ImageUrl = "data:image/png;base64," + ""; ???
        }
    }

感谢

要将字节[]转换为base64编码字符串,可以使用th
convert.ToBase64String(byte[])
方法

根据您的代码,类似于以下内容的内容应该可以工作:

protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Image img = (Image)e.Item.FindControl("Image1");
    if (img != null)
    {
        if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
        {
            DataRowView row = e.Item.DataItem as DataRowView;

            byte[] data = (byte[])row["ImageData"]; // get your data from the row

            img.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(data); 
         }
    }
}

要将字节[]转换为base64编码字符串,可以使用th
convert.ToBase64String(byte[])
方法

根据您的代码,类似于以下内容的内容应该可以工作:

protected void repImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Image img = (Image)e.Item.FindControl("Image1");
    if (img != null)
    {
        if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
        {
            DataRowView row = e.Item.DataItem as DataRowView;

            byte[] data = (byte[])row["ImageData"]; // get your data from the row

            img.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(data); 
         }
    }
}