Как добавить изображение к кнопке ссылки asp.net программно

У меня есть кнопка ссылки 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, так как мне нужно отображать как текст, так и изображение.

Ваше здоровье


person rlcrews    schedule 19.12.2012    source источник


Ответы (2)


Вам нужно будет сделать это, манипулируя свойством 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);
}
person Icarus    schedule 19.12.2012

Используйте атрибут 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);
person Francis P    schedule 19.12.2012
comment
@Francis Кнопки ссылок генерируются во время выполнения и добавляются к элементу управления панели (entityHolder). Я обновил свой вопрос, чтобы отразить это. В результате в файле aspx нет кнопок или изображений, на которые можно ссылаться. Вот почему мне нужно обрабатывать все это в коде (генерация и присваивание) -thnx - person rlcrews; 20.12.2012