C# と ASP.net を使用して URL に基づいてコントロールに動的画像を取り込む
質問
これが愚かな質問であることは承知しています。どういうわけか、これに関して私の頭は真っ白です。何か案は?
申し訳ありませんが、もっと明確にする必要がありました。
を使って HtmlGenericControl
画像だけでなくリンクの説明も取り込みます。
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);
}
}
}
誰かにこれをやってほしいと頼んでいるわけではなく、単なる参考やアイデアです。
ありがとう - あまりにもイライラし、謙虚な気持ちになりました。
解決
URLに基づいて画像を動的に生成したいと仮定しています。
私が通常行うのは、画像を提供するための非常に軽量な HTTPHandler を作成することです。
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;
}
}
}
}
これを img タグで直接参照できます。
<img src="GetImage.ashx?id=111"/>
あるいは、それを行うサーバー コントロールを作成することもできます。
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);
}
}
}
これは次のように使用できます
<cc:DDynamicImageCreator id="db1" Id="123" runat="server/>
他のヒント
新しいものをチェックしてください ダイナミックイメージコントロール ASP.NET チームによって CodePlex でリリースされました。
これはちょっとひどい質問ですね。つまり、.NET には、ソースを任意のものに設定できるイメージ コントロールがあります。何を議論したいのか分かりません。
所属していません StackOverflow