Me estuve peleando un rato con esto, hasta que encontré la solución.
Tengo un DataList, y dentro de él aparecen imágenes cuya ruta se forma a partir de un valor devuelto por la base de datos.
Mi primera idea fue tratar de unir la ruta con el Eval
, de esta forma:
- <asp:Image ImageUrl='~/postales/thumbs/<%# Eval("archivoThumbnail") %>' BorderStyle="None" CssClass="bordeImagenGris" Height="80" Width="80" ID="Image1" runat="server" />
Pero dado que el Eval
aparece dentro de las comillas simples de ImageUrl
, el valor es pasado tal cual, así que la imagen nunca es encontrada.
Para resolverlo, tienes que usar la función String.Format
, de esta manera:
- <asp:Image ImageUrl=<%# String.Format("~/postales/thumbs/{0}",Eval("archivoThumbnail"))%> BorderStyle="None" CssClass="bordeImagenGris" Height="80" Width="80" ID="Image1" runat="server" />
Sobre String.Format
La función String.Format
es un concatenador (valga el término) de cadenas de texto. Toma n parámetros. Cada parámetro se define por un número encerrado entre llaves ({
y }
), y a cada parámetro existente debes darle un valor.
Como siempre, es más fácil entenderlo con un ejemplo:
- String.Format("Roger {0} es el mejor {1} del {2}", "Federer", "tenista", "mundo")
- 'Esto regresará el siguiente texto:
- 'Roger Federer es el mejor tenista del mundo