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;
            }
        }

页面.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

两件事情:

  1. 每个请求都会调用一次处理程序。所以像这样返回两个图像是行不通的。
  2. ProcessRequest中,您需要context.Request.QueryString["ID"]获取要在代码隐藏中添加的 ID 查询字符串参数。

您必须调用int.Parse或调用int.TryParse该值,因为RedImg似乎需要一个 int。最好的做法是首先从查询字符串中获取值,使用 进行检查,string.IsNullOrEmpty如果是,则尽早退出。然后int.TryParse在值上使用,然后也跳出返回false。您可能还应该设置context.Response.StatusCode为 404 或类似的东西,以使其更“正确”HTTP。

于 2012-07-02T02:20:11.610 回答