簡體   English   中英

我想將數據庫中的圖像調用到ASP:repeater控件中,但是我正在 <image src“System.Byte[]”> 結果

[英]I want to call images from database in to ASP:repeater control but I am getting <image src“System.Byte[]”> in result

這是我在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的新手。

這是因為來自數據庫的值是表示圖像實際數據的字節數組。 img標簽的src需要圖像的URL。 基本上有兩種方法可以解決此問題...

  1. 創建一個單獨的頁面(最好是ASHX處理程序),該頁面返回圖像的數據(不返回HTML或類似內容)並鏈接到該頁面。
  2. Base-64對字節數組進行編碼,並將其作為數據URI包括在src屬性中。

在線上有很多關於第一個選項的教程。 是通過Google的快速搜索找到的,還有其他搜索條件。 從本質上講,處理程序將執行的操作是接受查詢字符串上的標識符,使用該標識符從數據庫中獲取圖像,然后將適當的標頭和內容寫入響應。 src屬性的URL將是該處理程序。 就像是:

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

(或者您的任何數據綁定數據用作圖像的標識符。)

假設您在數據庫“ ImageName”中的圖像列名稱是

解決方案1:如果您的圖片在根文件夾中

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

OR



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

解決方案2:如果您的圖像在圖像文件夾中

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

要么

<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> 

您需要在URI中為IMG HTML標簽進行轉換:

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

或同等學歷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM