Tirer une image dynamique dans un contrôle basé sur une URL utilisant C # et ASP.net
Question
Je sais que c'est une question stupide. Pour une raison quelconque, mon esprit est vide à ce sujet. Des idées?
Désolé aurait dû être plus clair.
Utilisation d'un HtmlGenericControl
pour extraire 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 demandez à personne de le faire pour moi simplement une référence ou une idée.
Merci, trop frustré et humilié.
La solution
Je suppose que vous souhaitez générer une image basée dynamiquement sur une URL.
Ce que je fais généralement 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 tag img:
<img src="GetImage.ashx?id=111"/>
Vous pouvez également 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);
}
}
}
Ceci pourrait être utilisé comme
<cc:DDynamicImageCreator id="db1" Id="123" runat="server/>
Autres conseils
Découvrez le nouveau contrôle DynamicImage publié. dans CodePlex par l'équipe ASP.NET.
C'est une sorte de question horrible. Je veux dire, .NET a un contrôle d'image où vous pouvez définir la source comme bon vous semble. Je ne suis pas sûr de ce que vous voulez discuter.