不幸的是我无法使用我称之为ImageHandler.ashx的repater和泛型处理程序来显示我的图像,可能是我做错了什么,我自己也找不到错误。
这是我的代码(顺便说一句,这是我第一次使用这个通用处理程序与转发器一起从数据库中获取我的图像而且我被困在这里)。
这是我的代码:
<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代码背后:
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个对象,每个对象都有图像:(
因为我在上面发布什么是解决方案,我们可以将其作为封闭的威胁!
答案 0 :(得分:0)
//以下是我编辑的内容:
<td>
<asp:Image ID="imageTest" runat="server" style="width: 60px; height: 30px;"
ImageUrl='<%#"~/ImageHandler.ashx?PlayerID="+Eval("PlayerID") %>' />
</td>