2016-09-24 46 views
0

不幸的是,我不能使用repater和泛型处理程序显示我的图像,我称之为ImageHandler.ashx,可能我做错了什么,而且我自己也找不到错误。图像不显示ASP.NET(通用handler.ashx)

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

这里是我的代码:

<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控制和可以解决myproblem但不幸的是我在这里我加载到数据表中,我不知道如何解决这个..

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

PS注释代码的作品,但它是缓慢的加载图像的地狱,这让我的整个页面加载速度很慢,因为我越来越喜欢从数据库50个对象和他们每个人都有像:(

因为我发布上述解决方案,我们可以威胁到这一点!

+0

在您设置它的MIME类型为image/PNG,但在你的处理器,你将它设置为图像/ JPEG注释代码。你所有的图像是PNG还是与JPEG(可能还有其他格式)混合? –

+0

现在所有的都是.jpg,,正如我所说的那样,代码可以很好地处理图像,但是它很慢:/ –

+0

这是什么意思“慢”?你如何测试它?针对单独的Windows Server或针对您的开发Windows 7/10? –

回答

0

//这里是我的编辑,使这个工程:

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