在转发器控制上显示图像

本文关键字:显示图 图像 显示 转发器 控制 | 更新日期: 2023-09-27 18:10:37

学习c# ASP.NET。我有一个问题与中继器控制。我想在存储在数据库中的页面上显示图像。我从北风数据库收集信息。

Categories table

SQL语法:

CREATE TABLE [dbo].[Categories](
    [CategoryID] [int] IDENTITY(1,1) NOT NULL,
    [CategoryName] [nvarchar](15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    [Description] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Picture] [image] NULL)
c#语法:
 NorthWindDataContext db = new NorthWindDataContext();
            List<Category> oList = new List<Category>();
            oList = db.Categories.ToList();
            Repeater1.DataSource = oList;

aspx语法:

 <ItemTemplate>
            <tr>
                <td>
                   <%#DataBinder.Eval(Container, "DataItem.Picture")%>
                </td>
            </tr>
        </ItemTemplate>

运行代码后,在我的页面我没有得到图片。帮我把图片放到我的页面上。提前感谢。如果有任何疑问请问。

在转发器控制上显示图像

您将图像作为二进制数据存储在数据库中,因此您不能按原样显示。

MSDN on image数据类型:

从0到2^31-1(2,147,483,647)的变长二进制数据字节。

常用的方法是从内存流中创建System.Drawing.Image的实例,然后在响应中显式地写入它。该功能应该由ASHX处理程序包装。参见web中的例子,有很多。

处理程序伪代码如下:(然后在ASPX中只引用处理程序)

IEnuemrable<byte> binaryImageData = queryExecutor.GetImageData(imageId);
// do not forget to dispose or use 'using'
var memoryStream = new MemoryStream(); 
memoryStream.Write(imageByte, 0, binaryImageData.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(memoryStream);
// ... create JPEG
context.Response.ContentType = "image/jpeg";
jpegImage.Save(context.Response.OutputStream, 
               System.Drawing.Imaging.ImageFormat.Jpeg);

我找到的好例子:

  • SO Post:动态渲染asp: asp中BLOB条目中的图像。净
  • c#从数据库中保存和加载图像