2008-09-22 22 views
0

Je sais que c'est une question stupide. Pour une raison quelconque, mon esprit est vide à ce sujet. Des idées?Tirer dans une image dynamique dans un contrôle basé sur une URL en utilisant C# et ASP.net

Désolé aurait dû être plus clair. Utilisation d'un HtmlGenericControl pour insérer la description du lien ainsi que l'image.

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

ne demande à personne de le faire pour moi juste une référence ou une idée.

Merci -très frustré et se sentir humilié.

+0

pouvez-vous élaborer? Que voulez-vous dire par dynamique dans cette situation? comme créé à la volée? et par url? J'ai fait des choses avec des images d'en-tête qui changent sur la base de l'URL tapée dans un système de CMS. Est-ce cela que vous voulez dire? – stephenbayer

Répondre

2

Je suppose que vous voulez générer une image basée dynamiquement sur une URL.

Ce que je fais en général est de créer un HTTPHandler très léger pour servir les images:

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

Vous pouvez référencer ceci directement dans votre balise img:

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

Ou bien, vous pouvez même créer un contrôle serveur qui le fait pour vous:

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

Cela pourrait être utilisé comme

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

J'ai utilisé cette technique plusieurs fois (par exemple des images téléchargées par proxy), et cela a bien fonctionné. –

-1

C'est une sorte de question horrible. Je veux dire, .NET a un contrôle d'image où vous pouvez définir la source à tout ce que vous voulez. Je ne suis pas sûr de ce que vous voulez discuter.