Convertir en Tableau d'Octets de l'image et l'afficher dans la Vue de Rasoir
Je suis en utilisant EF de Code 4.1 Première et par souci de simplicité, disons que j'ai l'Entité suivante classe:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public Byte[] Image { get; set; }
}
J'ai réussi à créer un Créer une Vue qui permet l'Ajout d'un objet dans la Base de données.
Mais quand je viens pour afficher les détails d'une Personne, je reste bloqué sur l'affichage de l'image. Après avoir fait quelques recherches, j'ai le texte suivant:
//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;
}
Et dans le point de Vue où je tente de liste de la Personne des détails, j'ai le texte suivant pour obtenir l'Image à afficher:
<img src="@Html.Action("getImg", "Person", new { id = item.Id })" alt="Person Image" />
Cependant, le ci-dessus ne fonctionne pas, ma source de l'image [src] attribut retourne vide.
Vous devez vous connecter pour publier un commentaire.
Comme ceci:
Vous avez besoin
Url.Action
et pasHtml.Action
parce que vous voulez juste pour générer une url à laGetImg
action.Html.Action
fait quelque chose de totalement différent.Il y a une manière plus simple de faire cela si vous avez déjà arriver d'avoir l'image chargée dans votre modèle:
Faire de cette façon, vous n'avez pas besoin d'aller sur le serveur à nouveau, juste pour récupérer l'image
byte[]
à partir de la base de données que vous êtes en train de faire.J'ai trouvé que la meilleure façon d'afficher un chargé dynamiquement SVG image à partir d'un Modèle de propriété dans un Rasoir MVC page est d'utiliser de l'Html.Méthode displayfor(..) en combinaison avec .ToHTMLString(). Pour mon cas, ont une base 64 Image SVG+XML chaîne de données stockées dans le modèle de la propriété nommée d'Image. Voici mon code:
Cela semblait être la seule façon que j'ai été en mesure d'obtenir l'image SVG pour les afficher correctement dans Chrome, FireFox et IE.
Acclamations