2016-05-02 14 views
0

Ich versuche, ein in einem Viewmodel gespeichertes Bild von meinem Controller an meine Rasiereransicht zu übergeben. Die beiden [Barcode] Bilder (System.Drawing.Image) wie nachstehend definiert sind:C# MVC Bild aus Viewmodel in einer Rasiereransicht anzeigen

ShippingSummaryViewModel shippingSummaryVm = ShippingSummaryViewModel.ToShippingSummaryFromOrder(orders); 
shippingSummaryVm.CustIdBarcode = CreateBarcode(shippingSummaryVm.customer_code); 
shippingSummaryVm.SalesOrderBarcode = CreateBarcode(shippingSummaryVm.order_id); 

meiner Meinung nach, würde ich eine <img>-Tag in der Lage sein möchten verwenden, um diese Bilder zu verweisen, aber ich bin nicht sicher, was für das setzen source als die Einstellung der src gleich @Model.CustIdBarcode funktioniert nicht aufgrund einer 404 Ressource nicht gefunden Fehler. Alle Hilfe wird geschätzt

Bearbeiten: In meiner Rasiermesseransicht verwende ich <img src="@Model.SalesOrderBarcode"/> und <img src="@Model.CustIdBarcode" />, um zu versuchen, die Bilder anzuzeigen. Diese Felder in meinem Viewmodel wie folgt aussehen:

public Image SalesOrderBarcode { get; set; } 
public Image CustIdBarcode { get; set; } 

und die Fehler, die ich erhalten, wenn die Seite dargestellt sind:

GET http://localhost:63957/Orders/System.Drawing.Bitmap 404 (Not Found) 

Antwort

3

HTML Bilder sind in der Regel mit einer anderen Anfrage auf dem Server verknüpft, so dass die System.Drawing.Image nicht die beste Möglichkeit ist, dies zu tun. Moderne Browser können Inline-Bilder haben (Base64 codiert), aber die beste Wette ist, eine andere Aktion auf dem Controller zu erstellen, die Sie verknüpfen können:

public class MyController { 
    public ActionResult GetCustIdBarCode(Guid code) { 
    var img = CreateBarcode(code); 

    // I'm not sure if the using here will work or not. It might work 
    // to just remove the using block if you have issues. 
    using (var strm = new MemoryStream()) { 
     img.Save(strm, "image/png"); 
     return File(strm, "image/png"); 
    } 
    } 

    public ActionResult GetSalesBarcode(Guid salesId) { 
    // Similar to above method 
    } 
} 

Und dann Ihrer Meinung nach, würden Sie so etwas wie haben:

<img src="@Url.Action("GetCustIdBarCode", new { code = customer_code })" /> 

https://stackoverflow.com/a/11546957/179311

0

Versuchen Sie, die folgende Syntax:

<img src="@Url.ImagePath(Model.CustIdBarcode)" /> 
+0

Fehler 'UrlHelper keine defintion für‚ImagePath'' enthalten – GregH

+0

Eigentlich src = „@ Model.CustIdBarcode: sollte funktionieren können Sie die p zeigen. ath Sie geben Src? Was hat Model.CustIdBarcode? – taquion

+0

Beitrag aktualisiert mit mehr Informationen – GregH

1

Ihrer Ansicht nach versuchen, wie diese

<img src= "@Url.Content(Model.ImagePath)" alt="Image" /> 
+0

Ich habe keinen Pfad zu meinem Bild, da ich es nirgendwo speichern möchte (es wird eine sehr kurze Lebensdauer haben). Mein Ansichtsmodell enthält direkt das Bild, das ich rendern möchte. – GregH

+0

Damit können Sie das Ergebnis in base64 zurückgeben –