0

従業員 ID に基づいて画像コントロールでデータベースから画像を取得して表示しようとしています... 私はこれを持っている httphandler を取得しました:

  Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

    'context.Response.ContentType = "text/plain"
    'context.Response.Write("Hello World!")

    Dim employeeId As Integer
    If (Not (context.Request.QueryString("employeeId")) Is Nothing) Then
        employeeId = Convert.ToInt32(context.Request.QueryString("employeeId"))
    Else
        Throw New ArgumentException("No parameter specified")
    End If
    Dim imageData() As Byte = {}
    ' get the image data from the database using the employeeId Querystring
    context.Response.ContentType = "image/jpeg"
    ' You can retrieve this also from the database
    context.Response.BinaryWrite(imageData)

End Sub

Protected Sub DisplayButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles DisplayButton.Click
    bind()
    GridView1.Visible = "True"
    ProcessRequest(Context)
End Sub

エラー:The 'MasterPageFile' property can only be set in or before the 'Page_PreInit' event. どこが間違っているのでしょうか? どのような変更を加える必要がありますか?

これは、フォーム上のイメージ コントロールです。

<asp:Image ID="Image1" runat="server" imageUrl="HttpHandler.ashx?employeeId=5"/>

@ステファノ・アルティエリ:

これは Employee.aspx にあります

Protected Sub DisplayButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles DisplayButton.Click
    bind()
    GridView1.Visible = "True"
    Image1.ImageUrl = "~/HttpHandler.ashx?EmployeeID='" & EmailIDTextBox.Text & "'"
End Sub

これは HttpHandler.ashx にあります

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

    'context.Response.ContentType = "text/plain"
    'context.Response.Write("Hello World!")

    Dim employeeId As Integer
    If (Not (context.Request.QueryString("employeeId")) Is Nothing) Then
        employeeId = Convert.ToInt32(context.Request.QueryString("employeeId"))
    Else
        Throw New ArgumentException("No parameter specified")
    End If
    Dim imageData() As Byte = {}
    ' get the image data from the database using the employeeId Querystring
    context.Response.ContentType = "image/jpeg"
    ' You can retrieve this also from the database
    context.Response.BinaryWrite(imageData)

End Sub
4

2 に答える 2

0

ジェネリックハンドラーはあなたを助けるかもしれません。

于 2013-03-04T09:45:05.037 に答える
0

あなたのハンドラーはこのようにする必要があります

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim employeeId As Integer
If (Not (context.Request.QueryString("employeeId")) Is Nothing) Then
employeeId = Convert.ToInt32(context.Request.QueryString("employeeId"))
Dim con As SqlConnection("your connection string")    
Dim cmd As SqlCommand("select image_colum from <table_name> where employeeID = "+employeeID)
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
dr.Read()
Dim picture As Byte() = dr[0]
context.Response.ContentType = "image/jpeg"
context.Response.BinaryWrite(picture)
End If
End Sub
于 2013-03-04T10:19:57.523 に答える