0

page.aspx.csコード:

HttpContext.Current.Session["id1"] = id1.ToString();
Server.Transfer("Handler.ashx"); //Getting error
Image1.ImageUrl = "~/Handler.ashx?ID=" + id1.ToString();

HttpContext.Current.Session["id2"] = id2.ToString();
Server.Transfer("Handler.ashx"); //Getting error
Image2.ImageUrl = "~/Handler.ashx?ID=" + id2.ToString();

Handler.ashxコード:

public void ProcessRequest(HttpContext context)
{
    int id = Convert.ToInt32(context.Session["id1"]);
    byte[] IMG = class.ReadImg(id);
    context.Response.ContentType = "image/jpg";
    context.Response.BinaryWrite(IMG);
}
public void ProcessRequest2(HttpContext context2)
{
    int id = Convert.ToInt32(context2.Session["id2"]);
    byte[] IMG2 = class.ReadImg(id);
    context2.Response.ContentType = "image/jpg";
    context2.Response.BinaryWrite(IMG2);
}

page.aspxコード:

<asp:Image ID="Image1" runat="server" />//How to define thats gonna show image of id1
<asp:Image ID="Image2" runat="server" />//How to define thats gonna show image of id2

質問:

  1. page.aspxからHandler.ashxにデータを転送できません
  2. ImageIDに従ってどの画像を表示するかを識別するための要素の作成方法がrequest.queryStringわかりません(おそらく私には理解できない魔法があります)

ヘルプ!!ありがとう :]

4

1 に答える 1

1

Server.Transfer() は、クライアントに HTTP 301 リダイレクトを返すことなく、サーバー側でリクエストを転送します。

この問題は、ashx ファイルのクエリ文字列を読み取るだけで解決できます。

string id = context.Request.Querystring["ID"];
context.Response.ContentType="image/jpeg";
......

次に、aspx ページで:

Image1.ImageUrl = "/Handler.ashx?ID="+id.ToString();
于 2012-07-02T17:12:51.800 に答える