Search code examples
c#sqlasp.netimagerepeater

Showing Byte Image in repeater


I want to some images in asp repeater which comes from databas image table.

HTML

 <asp:Repeater ID="rpt_" runat="server">                       
   <ItemTemplate>
     <li>
<img src="<%="data:image/jpg;base64," + Convert.ToBase64String((byte[])Eval("Photo")) %>" alt="" />
     </li>
   </ItemTemplate>
 </asp:Repeater>

C#

private void Load_()
{
    ClassDo class_ = new ClassDo;
    DataTable dt = class_.Ann().Tables[0];
    rpt_.DataSource = dt;
    rpt_.DataBind();
}

These are my codes, and get me error I cannot show images. HTML

<img alt="" src="<%="data:image/jpg;base64," + Convert.ToBase64String(Class_._image) %>" />

C#

Class_._image = (byte[])dt.Rows[0]["Photo"];

It works like that somewhere else, but with repeater I cannot read it with Eval.

Is there any working way to show images?


Solution

  • Can you try this?

    Create a function

    public string GetImage(object img)
    {
       return "data:image/jpg;base64," + Convert.ToBase64String((byte[])img);
    }
    

    Then change your declaration like this

    <asp:Image ImageUrl='<%# GetImage(Eval("Photo")) %>' />