我有一个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
,因为我需要渲染文字和图片。
干杯
答案 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);
}