4

Controls.Addテキストと画像の両方を追加する必要があるASP.NETリンクボタンがあります。サイコロを使用せずにボタンに画像を追加できると思いました。

これが私がこれまでに持っているものです:

foreach (var entity in metadata.Meta.Where(e => e.ReportableObject == true))
{
    LinkButton lb = new LinkButton();
    string iconpath = "~/images/search/" + entity.ClassName + ".png";
    lb.CssClass = "entityIcon";
    lb.Controls.Add(new Image { ImageUrl =  iconpath , CssClass = "imgSize"});
    lb.Text = entity.ClassName;
    entityHolder.Controls.Add(lb);
}

コントロールがレンダリングされると、テキストは表示されますが、画像コンテナもレンダリングされません。それが画像へのパスだったのではないかと思いましたが、完全修飾パスを使用して既存のサイトから画像にマップしようとしても、何もレンダリングされませんでした。

編集:明確にするために、メインページ(リンクまたは画像)にasp.netコントロールはありません。このforループは、コレクションを繰り返し、実行時にコントロールを作成します。最後の行entityHolderは、ボタンが追加されるASP.NETパネルです。

これが可能である場合でも、誰かが私が間違っていることを理解するのを手伝ってくれますか?テキストと画像の両方をレンダリングする必要があるため、ではLinkButtonなくを使用する必要があります。ImageButton

乾杯

4

2 に答える 2

0

background新しいコントロールを追加する代わりに、css属性を使用します。

 LinkButton lb = new LinkButton;
 string iconpath = "~/images/search/" + entity.ClassName + ".png";

 lb.Style.Add("background", "url('" + base.ResolveUrl(iconpath) + "') left center no-repeat");

 lb.CssClass = "entityIcon";
 lb.Text = entity.ClassName;
 entityHolder.Controls.Add(lb);
于 2012-12-19T20:56:30.373 に答える
0

<imgたとえば、タグをレンダリングするには、コントロールのTextプロパティを操作する必要があります。

foreach (var entity in metadata.Meta.Where(e => e.ReportableObject == true))
{
      LinkButton lb = new LinkButton();
      string iconpath = ResolveClientUrl("~/images/search/" + entity.ClassName + ".png");
      lb.CssClass = "entityIcon";
      lb.Text = string.Format(@"image <img src=""{0}"" class=""{1}"" />",iconpath,"imgSize");
      entityHolder.Controls.Add(lb);
}
于 2012-12-19T21:19:51.130 に答える