Extrayendo una imagen dinámica en un control basado en una URL usando C# y ASP.net

StackOverflow https://stackoverflow.com/questions/116869

  •  02-07-2019
  •  | 
  •  

Pregunta

Sé que esta es una pregunta tonta.Por alguna razón mi mente está en blanco sobre esto.¿Algunas ideas?

Lo siento, debería haber sido más claro.

Usando un HtmlGenericControl para obtener la descripción del enlace y la imagen.

 private void InternalCreateChildControls()
    {
        if (this.DataItem != null && this.Relationships.Count > 0)
        {
            HtmlGenericControl fieldset = new HtmlGenericControl("fieldset");
            this.Controls.Add(fieldset);
            HtmlGenericControl legend = new HtmlGenericControl("legend");
            legend.InnerText = this.Caption;
            fieldset.Controls.Add(legend);

            HtmlGenericControl listControl = new HtmlGenericControl("ul");
            fieldset.Controls.Add(listControl);

            for (int i = 0; i < this.Relationships.Count; i++)
            {
                CatalogRelationshipsDataSet.CatalogRelationship relationship =
                    this.Relationships[i];

                HtmlGenericControl listItem = new HtmlGenericControl("li");
                listControl.Controls.Add(listItem);

                RelatedItemsContainer container = new RelatedItemsContainer(relationship);
                listItem.Controls.Add(container);

                Image Image = new Image();
                Image.ImageUrl = relationship.DisplayName;




                LinkButton link = new LinkButton();
                link.Text = relationship.DisplayName;



               ///ToDO Add Image or Image and description
                link.CommandName = "Redirect";
                container.Controls.Add(link);
            }
        }
    }

No pedirle a nadie que haga esto por mí, solo una referencia o una idea.

Gracias, demasiado frustrado y humillado.

¿Fue útil?

Solución

Supongo que desea generar una imagen dinámicamente basada en una URL.

Lo que normalmente hago es crear un HTTPHandler muy liviano para servir las imágenes:

using System;
using System.Web;

namespace Example
{  
    public class GetImage : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            if (context.Request.QueryString("id") != null)
            {
                // Code that uses System.Drawing to construct the image
                // ...
                context.Response.ContentType = "image/pjpeg";
                context.Response.BinaryWrite(Image);
                context.Response.End();
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

Puedes hacer referencia a esto directamente en tu etiqueta img:

<img src="GetImage.ashx?id=111"/>

O incluso podrías crear un control de servidor que lo haga por ti:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Example.WebControl
{

    [ToolboxData("<{0}:DynamicImageCreator runat=server></{0}:DynamicImageCreator>")]
    public class DynamicImageCreator : Control
    {

        public int Id
        {
            get
            {
                if (ViewState["Id" + this.ID] == null)
                    return 0;
                else
                    return ViewState["Id"];
            }
            set
            {
                ViewState["Id" + this.ID] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write("<img src='getImage.ashx?id=" + this.Id + "'/>");
            base.RenderContents(output);
        }
    }
}

Esto podría usarse como

<cc:DDynamicImageCreator id="db1" Id="123" runat="server/>

Otros consejos

Mira lo nuevo Control de imagen dinámica lanzado en CodePlex por el equipo de ASP.NET.

Ésta es una pregunta algo horrible.Quiero decir, .NET tiene un control de imagen donde puedes configurar la fuente como quieras.No estoy seguro de qué quieres que hablemos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top