Nous avons quelques images dans notre base de données et que vous souhaitez afficher leur en vue. Je trouve deux voies de le faire - la première: nous créons une méthode d'action dans le contrôleur qui obtiennent une image de base de données et de retour FileContentResult:ASP.NET MVC: chargement des images de la base de données et affichage de leur vue
public ActionResult GetImage(int id)
{
var imageData = ...get bytes from database...
return File(imageData, "image/jpg");
}
Code
en vue:
<img src='<%= Url.Action("GetImage", "image", new { id = ViewData["imageID"] }) %>' />
La deuxième façon est d'utiliser HttpHandler:
public void ProcessRequest(HttpContext Context)
{
byte [] b = your image...;
Context.Response.ContentType = "image/jpeg";
Context.Response.BinaryWrite(b);
}
et code en mode:
<img src="AlbumArt.ashx?imageId=1" />
La première question est ce qui est le (travail plus rapide) la plus efficace façon de mettre en œuvre cette fonctionnalité (et pourquoi travailler plus vite)?
Et la deuxième question - est-il un moyen de mettre directement l'image dans notre vue, lorsque nous appelons d'abord la méthode d'action pour retourner cette vue? Je veux dire que dans la méthode d'action que nous obtenons liste des images de base de données et transmettre leur liste en vue que, et compte tenu utilisation de ce code:
<%=Html.Image(Model[i])%>
ce code doit mettre l'image en vue directement à partir du modèle.
Considérez-vous de mettre des fichiers d'images en dehors de la base de données? –
Oui, j'ai placé la plupart des images dans le système de fichiers, mais j'étais intéressé par la solution décrite ci-dessus. – Kai