没有显示图像.. NET (Generic handler.ashx)

本文关键字:Generic handler ashx NET 显示 显示图 图像 | 更新日期: 2023-09-27 18:08:43

不幸的是,我不能使用repater和通用处理程序显示我的图像,我称之为ImageHandler。也许是我做错了什么,而我自己却发现不了。

这是我的代码(顺便说一句,这是我第一次使用这个通用处理程序与重复器相结合,从数据库中获取我的图像,我被困在这里)。

下面是我的代码:
<table class="table table-hover" style="margin-top: 50px; background-color: white;">
<tr>
    <th>Name</th>
    <th>Last Name</th>
    <th>Photo</th>
</tr>
<asp:Repeater ID="repPlayers" runat="server" OnItemCommand="repPlayers_ItemCommand">
    <ItemTemplate>
        <tr>
            <td><%# Eval("Name") %></td>
            <td><%# Eval("LastName") %></td>
            <td>
                <asp:Image ID="imageTest" src="~/ImageHandler.ashx?id=PlayerID" runat="server" />
                <%--<img id="imageTest" style="width: 60px; height: 30px;" src="data:image/png;base64, <%# Convert.ToBase64String((byte[])Eval("Photo")) %> " />--%>
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

ImageHandler。ashx CODE:

public class ImageHandler : IHttpHandler
 {
    public void ProcessRequest(HttpContext context)
    {
        int playerID = Convert.ToInt32(context.Request["PlayerID"]);
        Players.Data.DataAccess player = Players.Data.DataAccess.GetByPlayerId(playerID);
        context.Response.ContentType = "image/jpeg";
        context.Response.BinaryWrite(player.Photo);
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

可能我做错了什么,也许我应该把'<%#Eval("PlayerID")%>'结合起来或其他什么?如果我使用的是datagrid,我会使用Item_dataBound控件,这可以解决我的问题,但不幸的是,我在这里加载我的数据到表,我不知道如何解决这个。

编辑:我也试过这个,这是解决方案:<asp:Image ID="imageTest" runat="server" ImageUrl='<%#"~/ImageHandler.ashx?PlayerID="+Eval("PlayerID") %>' />

p。S注释代码可以工作,但它加载图像的速度很慢,这使得我的整个页面加载非常慢,因为我从数据库中获得了大约50个对象,每个对象都有图像:(

因为我在上面贴的是解决方案,我们可以威胁这是关闭!

没有显示图像.. NET (Generic handler.ashx)

//下面是我编辑的内容:

<td>
    <asp:Image ID="imageTest" runat="server" style="width: 60px; height: 30px;"
       ImageUrl='<%#"~/ImageHandler.ashx?PlayerID="+Eval("PlayerID") %>' />
</td>