如何以编程方式将图像添加到asp.net链接按钮

时间:2012-12-19 20:51:47

标签: c# asp.net asplinkbutton

我有一个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面板。

如果有可能,有人可以帮助我理解我做错了什么。我必须使用LinkButton而不是ImageButton,因为我需要渲染文字和图片。

干杯

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
}