在我的页面中,我试图显示两个具有相同ID的图像。为此,我有两个图像控件(imgX,imgY)。要将图像写入图像控件,我使用的是HttpHandler(ashx)。
我的问题是我在两个控件上都有相同的图像(imgX,imgY)
在页面加载事件中,这是我的代码:
imgPhoto.ImageUrl = "Image.ashx?EmpBadge=" & Session("EmpBadge")
imgSign.ImageUrl = "Image.ashx?EmpBadge=" & Session("EmpBadge")
在ashx中:
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Try
Dim imageId As String = context.Request.QueryString("EmpBadge")
Dim drPhoto As SqlDataReader
Dim param(1) As SqlParameter
param(1) = New SqlParameter("@EmpBadge", imageId)
drPhoto = IMSIndia.ExecuteReaderWithParam("SpGetPhotoAndSignature", param)
If drPhoto.HasRows Then
While drPhoto.Read()
context.Response.ContentType = "image/" & drPhoto("PhotoType")
context.Response.BinaryWrite(DirectCast(drPhoto("Photo"), Byte()))
context.Response.ContentType = "image/" & drPhoto("Signaturetype")
context.Response.BinaryWrite(DirectCast(drPhoto("Signature"), Byte()))
End While
End If
Catch ex As Exception
Finally
If IMSIndia.con.State = ConnectionState.Open Then
IMSIndia.ConnectionClose()
End If
End Try
End Sub
感谢。
答案 0 :(得分:1)
嗯... 当然你们每个人都得到相同的图像;您为每个传递完全相同的URL。您对两者使用相同的Session
值。
然后,在您的代码中,您似乎尝试在同一响应中发送两个图像。这根本没有意义,我不确定它是否与这个问题有关。
您需要根据QueryString值区分图像。除非你这样做,否则你的经纪人无法区分。
答案 1 :(得分:1)
你应该改变你的代码。
在Page_Load
imgPhoto.ImageUrl = "Image.ashx?ImageType=photo&EmpBadge=" & Session("EmpBadge")
imgSign.ImageUrl = "Image.ashx?ImageType=signature&EmpBadge=" & Session("EmpBadge")
在while
内的ProcessRequest
循环内,放置一个if-else,就像这样。
If drPhoto.HasRows Then
While drPhoto.Read()
If context.Request.QueryString("ImageType") = "photo" Then
context.Response.ContentType = "image/" & drPhoto("PhotoType")
context.Response.BinaryWrite(DirectCast(drPhoto("Photo"), Byte()))
Else
context.Response.ContentType = "image/" & drPhoto("Signaturetype")
context.Response.BinaryWrite(DirectCast(drPhoto("Signature"), Byte()))
End If
End While
End If