我想将数据库中的图像调用到ASP:转发器控件,但我得到<img src"system.byte[]"=""/>的结果

时间:2014-07-06 19:43:26

标签: c# asp.net repeater

这是我在aspx文件中的代码

cnn.Open();
    SqlDataAdapter da1 = new SqlDataAdapter("select * from carousel", cnn);
    DataTable dt1 = new DataTable();
    da1.Fill(dt1);
    Rp1.DataSource = dt1;
    Rp1.DataBind();
cnn.Close();

这是转发器

<asp:Repeater id="Rp1" runat="server">
        <ItemTemplate>
        <div class="item">
            <asp:Image ID="Image1" ImageUrl='<%# Eval("image") %>' runat="server" />
        </div>
        </ItemTemplate>
        <footertemplate></footertemplate>
</asp:Repeater>

我尝试了所有的东西,但每次我真的想要一些帮助时我都会得到结果,我是ASP.Net的新手

3 个答案:

答案 0 :(得分:4)

这是因为来自数据库的值是表示图像实际数据的字节数组。而src标记的img需要图片的网址。基本上有两种方法可以解决这个问题......

  1. 创建一个单独的页面(或者最好是ASHX处理程序),它只返回 图像的数据(没有HTML或类似的东西)并链接到该页面。
  2. Base-64对字节数组进行编码,并将其作为src属性中的data URI包含在内。
  3. 第一个在线选项有很多教程。通过Google快速搜索找到This one,还有其他搜索。本质上,处理程序要做的是接受查询字符串上的标识符,使用该标识符从数据库中获取图像,然后将相应的标题和内容写入响应。然后src属性的URL将成为该处理程序。类似的东西:

    ImageUrl='<# "~/handler.ashx?id=" + Eval("id") #>'
    

    (或者您的数据绑定数据用作图像的标识符。)

答案 1 :(得分:0)

假设您的图像列名在数据库&#34; ImageName&#34;然后

解决方案1:如果你的图像在根文件夹

 <img src='<%#Eval("ImageName")%>' alt="" />

OR



 <asp:Image ID="Image1" ImageUrl='<%#Eval("ImageName")%>' runat="server" />

解决方案2:如果您的图像在图像文件夹中

<img src='<%# "images/" + Eval("ImageName") %>'  alt=""/>

OR

<asp:Image ID="Image1" ImageUrl='<%# "images/" + Eval("ImageName") %>' runat="server" />

您的最终解决方案:

<asp:Repeater id="Rp1" runat="server">
           <ItemTemplate>
        <div class="item">
<img src='<%#Eval("ImageName")%>' alt="" />
OR
<asp:Image ID="Image1" ImageUrl='<%# "images/" + Eval("ImageName") %>' runat="server" />
        </div>
        </ItemTemplate>
        <footertemplate></footertemplate>
</asp:Repeater> 

答案 2 :(得分:0)

您需要在URI中转换IMG HTML标记:

<img src="<%# System.Text.Encoding.ASCII.GetString(Eval("bynarydatacolumn")) %>" />

或同等的。