不幸的是,我不能使用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个对象,每个对象都有图像:(
因为我在上面贴的是解决方案,我们可以威胁这是关闭!//下面是我编辑的内容:
<td>
<asp:Image ID="imageTest" runat="server" style="width: 60px; height: 30px;"
ImageUrl='<%#"~/ImageHandler.ashx?PlayerID="+Eval("PlayerID") %>' />
</td>