0

ハンドラーページに情報を渡すにはどうすればよいですか?また、asp-image-controlに表示する画像を指定するにはどうすればよいですか?

Handler1.ashx.csコード:

public void ProcessRequest(HttpContext context)
        {
             int id1 = something //how can I pass a information to a handler page
             int id2 = somthing 2 // same case

                byte[] IMG = classP.RedImg(id1);
                context.Response.ContentType = "image/jpg";
                context.Response.BinaryWrite(IMG);

                byte[] IMG2 = classP.RedImg(id2);
                context.Response.ContentType = "image/jpg";
                context.Response.BinaryWrite(IMG2);
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

Page.aspxコード:

<asp:Image ID="Image1" runat="server" />
<asp:Image ID="Image2" runat="server" />

Page.aspx.csコードビハインド:

string[] data = classC.ReadClient();
int id1 = Convert.ToInt32(data[0]); //Here is id1 value
int id2 = Convert.ToInt32(data[1]); //Here is id2 value

Image1.ImageUrl = "~/Handler1.ashx?ID=" + id1.ToString();
Image2.ImageUrl = "~/Handler1.ashx?ID=" + id2.ToString();

ありがとう :]

4

1 に答える 1

0

2つのこと:

  1. ハンドラーは、リクエストごとに1回呼び出されます。したがって、そのような両方の画像を返すことは機能しません。
  2. では、コードビハインドで追加するIDクエリ文字列パラメータを取得ProcessRequestする必要があります。context.Request.QueryString["ID"]

intを期待しているように見えるので、int.Parseまたはint.TryParseその値を呼び出す必要があります。RedImg最善の行動は、最初にクエリ文字列から値を取得し、それをで確認しstring.IsNullOrEmpty、そうである場合は早期に救済することです。次に、値を使用int.TryParseし、それからベイルアウトするとfalseが返されます。context.Response.StatusCodeより「適切な」HTTPにするために、おそらくこれらの線に沿って404などに設定する必要があります。

于 2012-07-02T02:20:11.610 に答える