4

我有一个 ASP.NET 链接按钮,我需要向其中添加文本和图像,我认为我可以使用Controls.Add但不使用骰子将图像添加到按钮。

这是我到目前为止所拥有的:

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 面板。

如果这是可能的,有人可以帮助我理解我做错了什么。我必须使用 aLinkButton而不是 aImageButton因为我需要渲染文本和图像。

干杯

4

2 回答 2

0

使用backgroundcss 属性而不是添加新控件。

 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

您必须通过操作控件的 Text 属性来呈现<img标记,例如:

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 回答