Wir haben ein paar Bilder in unserer Datenbank und möchten deren in Sicht anzeigen. Ich finde Zweiweg, dies zu tun - die ersten: Wir Aktionsmethode in Controller zu erstellen, die ein Bild aus der Datenbank erhalten und zurück Filecontentresult:ASP.NET MVC: Laden von Bildern aus der Datenbank und Anzeigen ihrer in Sicht
public ActionResult GetImage(int id)
{
var imageData = ...get bytes from database...
return File(imageData, "image/jpg");
}
Code im Blick:
<img src='<%= Url.Action("GetImage", "image", new { id = ViewData["imageID"] }) %>' />
Der zweite Weg ist zu verwenden HttpHandler:
public void ProcessRequest(HttpContext Context)
{
byte [] b = your image...;
Context.Response.ContentType = "image/jpeg";
Context.Response.BinaryWrite(b);
}
und Code im Blick:
<img src="AlbumArt.ashx?imageId=1" />
Die erste Frage, was ist der effizienteste (Arbeit schneller) Weg, um diese Funktionalität zu implementieren (und warum es schneller arbeiten)?
Und die zweite Frage - gibt es eine Möglichkeit, Bild direkt in unsere Sicht zu setzen, wenn wir zuerst Aktionsmethode aufrufen, um diese Ansicht zurückzugeben? Ich meine, dass wir die Liste der Bilder aus der Datenbank in Aktion-Methode erhalten und ihre als Liste in Sicht passieren, und im Hinblick auf die Verwendung diesen Code:
<%=Html.Image(Model[i])%>
dass Codebild in den Blick vom Modell direkt setzen müssen.
Denken Sie darüber nach, Bilddateien außerhalb der db abzulegen? –
Ja, ich habe die meisten Bilder im Dateisystem gespeichert, aber ich war an der oben beschriebenen Lösung interessiert. – Kai