ASP.Net MVC ¿Cómo mostrar una propiedad de imagen de un modelo en una vista?
-
05-07-2019 - |
Pregunta
Soy nuevo en asp.net mvc, pero estoy tratando de hacer una aplicación divertida con GDI + y necesito hacer una vista de imagen con asp.net mvc.
Tengo un modelo que tiene una propiedad de imagen:
namespace DomainModel.Entities
{
public class BackgroundImage
{
// Properties
public Image Image {get; private set; }
public BackgroundImage()
{
Image = Image.FromFile(@"D:\ProjectZero\DomainModel\image\bkg.PNG");
}
}
}
El controlador envía a la vista lo siguiente:
public ActionResult Index()
{
BackgroundImage bkImg = new BackgroundImage();
return View(bkImg);
}
La vista se ve así:
<p> Height: </p><%= Model.Image.Height //it prints the height of the image %> </br>
<p> Width: </p><%= Model.Image.Width //it prints the width %> </br>
<p> Image: </p><%= Model.Image //does not work to display the image %>
¿Cómo muestro esa propiedad de imagen?
Necesito esa imagen de fondo para un div. No necesito cambiar el tamaño de la imagen, solo necesito mostrarla en su tamaño normal.
¿Hay un ayudante HTML que extraño?
¡Gracias por tu tiempo!
Solución
Necesitas escribir una acción de controlador que escribirá la imagen en el flujo de respuesta y establecerá el tipo de contenido adecuado para decir " imagen / png " ;. Luego puede utilizar la etiqueta img
para hacer referencia a esta acción en su vista:
public ActionResult Image()
{
byte[] image = GenerateImage();
return File(image, "image/png");
}
Y dentro de tu vista:
<img src="<%= Url.Action("Image") %>" alt="" />
Otros consejos
Necesitarás un HttpHandler si quieres hacer cosas como esta.