【问题标题】:Binding image from SQL Server to repeater in ASP.NET not loading?将图像从 SQL Server 绑定到 ASP.NET 中的中继器未加载?
【发布时间】:2020-11-25 08:56:50
【问题描述】:

我想将图像从 SQL Server 绑定到 ASP.NET 中的中继器,图像未加载这里是我的代码绑定图像时的代码未加载有人可以帮忙吗?

<asp:Repeater ID="RepterDetails" runat="server">
    <HeaderTemplate>Products View</HeaderTemplate>
    <ItemTemplate>
        <asp:Label ID="lblSubject" runat="server" Text='<%#Eval("Title") %>' Font-Bold="true" />

        <hr />
        <asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("img1") %>' Width="100" Height="100" AlternateText="No picture found" Visible="true" />

        <hr />

        Post By:
        <asp:Label ID="lblUser" runat="server" Font-Bold="true" Text='<%#Eval("Name") %>' />
        Created Date:<asp:Label ID="lblDate" runat="server" Font-Bold="true" Text='<%#Eval("Date") %>' />
        <asp:Button ID="Button1" runat="server" Text="Order Now" />
        <hr />
    </ItemTemplate>
    <FooterTemplate>
    </FooterTemplate>
</asp:Repeater>  

public void RepeterData()
{
    con.Open();
    cmd = new SqlCommand("Select * from [Products T]", con);
    DataSet ds = new DataSet();
    da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    RepterDetails.DataSource = ds;
    RepterDetails.DataBind();
    con.Close();
}

【问题讨论】:

  • 你检查了来自 sql 表的 url 吗?如果您手动将它们放在图像标签中,是否正在加载图片?客户端是否有控制台消息?
  • 我的 urls 来自 SQL 中的表,这是我的控制台日志错误:View:34 GET localhost:44378/Posts/System.Byte[]404

标签: c# asp.net sql-server web webforms


【解决方案1】:

字节数组不是图像 url。您不能只是将其粘贴到 url 中并期望出现图像。

您需要将字节数组转换回实际图像。通过创建一个加载图像的通用处理程序,或者将其显示为 base64

ImageUrl='<%# "data:image/jpeg;base64," + Convert.ToBase64String((byte[])Eval("img1")) %>'

但是,如果图像非常小并且数量不多,我只会使用 base64。

【讨论】:

    【解决方案2】:

    您不能通过 URL 传递 Bytes,在将图像传递给 ASP.NET 控件之前,您可以执行此操作(我假设您的图像格式是 jpg):

    <asp:Image ID="Image1" runat="server" ImageUrl='<%#Eval("img1") %>' Width="100" Height="100" AlternateText="No picture found"  Visible="true"/>
    ...
    public void RepeterData()
    {
        ...
        var imageBinary = ds["Img1"].ReadAsBytes();
        var imageString =  Convert.ToBase64String(imageBinary , 0, imageBinary.Length);
        Image1.Src =  "data:image/jpg;base64," + imageString;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多