0

这是代码,问题是图像已显示,但在清除所有页面后,我需要将其绘制在 Web 表单内的用户控件中。

protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["ObjHoteles"] == null)
        {
            Label1.Text = "select hotel first please.";
        }
        else
        {
            if (!IsPostBack)
            {
                List<Byte[]> ArrayFotos = new List<Byte[]>();
                string NombreDelHotel = "";

                Hoteles Hotel1 = (Hoteles)Session["ObjHoteles"];
                NombreDelHotel = Hotel1.NombreHotel;

                ArrayFotos = Persistencia.PersistenciaFotos.FotosDeHotel(NombreDelHotel);
                Session["CantFotos"] = ArrayFotos.Count();

                Byte[] Foto = ArrayFotos[0];

                Response.Buffer = true;                
                Response.ContentType = "image/jpeg";
                Response.Expires = 0;
                Response.OutputStream.Write(Foto, 0, Foto.Length);
                Session["NumFoto"] = 0;
            }
            else
            {
                List<Byte[]> ArrayFotos = new List<Byte[]>();
                string NombreDelHotel = "";

                Hoteles Hotel1 = (Hoteles)Session["ObjHoteles"];
                NombreDelHotel = Hotel1.NombreHotel;

                ArrayFotos = Persistencia.PersistenciaFotos.FotosDeHotel(NombreDelHotel);
                Session["CantFotos"] = ArrayFotos.Count();

                Byte[] Foto = ArrayFotos[(int)Session["NumFoto"]];

                Response.Buffer = true;
                Response.Clear();
                Response.ContentType = "image/jpeg";
                Response.Expires = 0;
                Response.BinaryWrite(Foto);

            }
        }
    }

我需要显示用户控件位于 Web 表单内的图像。不在新页面中。

我需要使用我的客户特别要求的用户控件。

4

1 回答 1

0

添加

<img src="/imagehandler.ashx" />

public class ImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.OutputStream.Write(imageData, 0, imageData.Length);
        context.Response.ContentType = "image/JPEG";
    }
}

这个问题的另一个解决方案是将图像数据放入缓存中:

Guid id = Guid.NewGuid();
HttpRuntime.Cache.Add(id.ToString(), imageData);
And pass the key to the HttpHandler in the querystring, so it can fetch it from cache:

<img src="/imagehandler.ashx?img=<%=id%>" />
<!-- will print ...ashx?img=42a96c06-c5dd-488c-906f-cf20663d0a43 -->

参考:bytearray 到图像 asp.net

于 2015-02-09T11:04:12.277 回答