如何通过编程将图片添加到asp.net链接按钮

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控件(链接或图像),这个循环正在迭代一个集合并在运行时创建控件。最后一行entityHolder是一个ASP.NET面板,按钮被添加到其中。
如果可能的话,有人可以帮助我理解我做错了什么。我必须使用LinkButton而不是ImageButton,因为我需要呈现文本和图像。
干杯
2个回答

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

0
请使用CSS属性background而不是添加新的控件。
 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);

@Francis 链接按钮是在运行时生成并添加到面板控件(entityHolder)中的。我已经更新了我的问题以反映这一点。因此,在aspx文件中没有任何按钮或图像可供引用。这就是为什么我需要在代码中处理所有这些内容(生成和分配)-谢谢 - rlcrews

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接