Tenemos algunas imágenes en nuestra base de datos y queremos mostrarlas a la vista. Encuentro bidireccional para hacer esto - la primera: creamos método de acción en el controlador que obtener una imagen de la base de datos y volver FileContentResult:ASP.NET MVC: cargando imágenes de la base de datos y mostrando su en vista
public ActionResult GetImage(int id)
{
var imageData = ...get bytes from database...
return File(imageData, "image/jpg");
}
código en la vista:
<img src='<%= Url.Action("GetImage", "image", new { id = ViewData["imageID"] }) %>' />
La segunda forma de es usar HttpHandler:
public void ProcessRequest(HttpContext Context)
{
byte [] b = your image...;
Context.Response.ContentType = "image/jpeg";
Context.Response.BinaryWrite(b);
}
y código en la vista:
<img src="AlbumArt.ashx?imageId=1" />
La primera pregunta es ¿cuál es el más eficiente (un trabajo más rápido) forma de implementar esta funcionalidad (y por qué trabajar más rápido)?
Y la segunda pregunta: ¿hay alguna manera de poner la imagen en nuestra vista directamente, cuando llamamos por primera vez al método de acción para devolver esta vista? Me refiero a que en el método de acción que obtenemos lista de imágenes a partir de la base de datos y transmitir su en ver como listado, y teniendo en cuenta el uso de este código:
<%=Html.Image(Model[i])%>
que el código debe poner imagen a la vista directamente de modelo.
¿Considera que debe colocar archivos de imágenes fuera del DB? –
Sí, coloqué la mayoría de las imágenes en el sistema de archivos, pero estaba interesado en la solución descrita anteriormente. – Kai