Еще один голос за "AppendFormat". Кроме того, ради серверного кода я мог бы вынести здесь одинарные кавычки, чтобы избежать необходимости что-либо экранировать:
StringBuilder markup = new StringBuilder();
foreach (SearchResult image in Search.GetImages(componentId))
{
markup.AppendFormat(
"<div class='captionedImage'><img src='{0}' width='150' alt='{1}'/><p>{1}</p></div>",
image.Resolutions[0].Uri, image.Caption
);
}
LiteralMarkup.Text = markup.ToString();
Наконец, вам может понадобиться дополнительная проверка где-нибудь, чтобы предотвратить внедрение html / xss.
Другим вариантом является инкапсуляция вашего изображения в классе:
public class CaptionedHtmlImage
{
public Uri src {get; set;};
public string Caption {get; set;}
CaptionedHtmlImage(Uri src, string Caption)
{
this.src = src;
this.Caption = Caption;
}
public override string ToString()
{
return String.Format(
"<div class='captionedImage'><img src='{0}' width='150' alt='{1}'/><p>{1}</p></div>"
src.ToString(), Caption
);
}
}
Это дает преимущество, заключающееся в том, что с течением времени его легко использовать повторно и добавлять в концепцию функции. Чтобы получить реальную фантазию, вы можете превратить этот класс в пользовательский контроль.