J'imagine que cela va descendre à vos préférences personnelles, mais dans quel sens iriez-vous?Quelle méthode trouvez-vous plus lisible pour produire du HTML dynamique?
StringBuilder markup = new StringBuilder();
foreach (SearchResult image in Search.GetImages(componentId))
{
markup.Append(String.Format("<div class=\"captionedImage\"><img src=\"{0}\" width=\"150\" alt=\"{1}\"/><p>{1}</p></div>", image.Resolutions[0].Uri, image.Caption));
}
LiteralMarkup.Text = markup.ToString();
Vs.
StringBuilder markup = new StringBuilder();
foreach (SearchResult image in Search.GetImages(componentId))
{
markup.Append(String.Format(@"<div class=""captionedImage""><img src=""{0}"" width=""150"" alt=""{1}""/><p>{1}</p></div>", image.Resolutions[0].Uri, image.Caption));
}
LiteralMarkup.Text = markup.ToString();
Ou devrais-je pas faire du tout et en utilisant la classe HtmlTextWriter à la place?
EDIT: Quelques très bonnes suggestions ici. Nous sommes sur le cadre 2.0 donc LINQ n'est pas disponible
Comment ne pas utiliser ASPX? –
Utilisez toujours HtmlTextWriter pour écrire du HTML, et analysez ce que vous écrivez à partir de la logique qui le pilote. –
Quelle que soit la méthode que vous utilisez, vous devez Server.HtmlEncode() l'URI et la légende avant de le jeter dans la chaîne ou vous aurez des trous d'injection HTML menant au potentiel XSS. Tout 'bon' système de template HTML fera cela pour vous ... mais notez que tous ne sont pas 'bons' ;-) – bobince