Convierta la matriz de bytes a la imagen y la pantalla en la vista Razor

Estoy usando EF 4.1 Code First y, en aras de la simplicidad, digamos que tengo la siguiente clase de Entity:

public class Person { public int Id { get; set; } public string Name { get; set; } public Byte[] Image { get; set; } } 

He logrado crear una vista de creación de trabajo que permite agregar objetos a la base de datos.

Pero cuando vengo a mostrar los detalles de una Persona, me quedo estancado al mostrar la Imagen . Después de buscar en Google por muchas horas, tengo lo siguiente:

 // To convert the Byte Array to the author Image public FileContentResult getImg(int id) { byte[] byteArray = DbContext.Persons.Find(id).Image; return byteArray != null ? new FileContentResult(byteArray, "image/jpeg") : null; } 

Y en la vista en la que bash enumerar los detalles de la persona, tengo lo siguiente para mostrar la imagen:

 Person Image 

Sin embargo, lo anterior no funciona , mi atributo de fuente de imagen [src] vuelve vacío .

Agradecería mucho ayuda para que mis imágenes se muestren.

Gracias.

Ciwan.

Me gusta esto:

 Person Image 

Necesita Url.Action y no Html.Action porque solo desea generar una url para la acción GetImg . Html.Action hace algo completamente diferente .

Hay una forma aún más fácil de hacerlo si ya tiene la imagen cargada en su modelo:

  

De esta manera, no es necesario ir al servidor de nuevo solo para recuperar el byte[] la imagen byte[] de la base de datos mientras lo hace.

Descubrí que la mejor manera de mostrar una imagen SVG cargada dinámicamente desde una propiedad de Modelo en una página de Razor MVC es usar Html.DisplayFor (..) en combinación con .ToHTMLString (). En mi caso, tenga una cadena base 64 de datos SVG Image + XML almacenada en la propiedad del modelo llamada Image. Aquí está mi código:

  

Esta parecía ser la única forma en que podía hacer que la imagen SVG se mostrara correctamente en Chrome, Firefox e Internet Explorer.

Aclamaciones