2016-12-05 10 views
0

Ich bekomme einen Null-Wert, wenn versucht wird, ein Byte-Array über eine Aktionsverbindung an den Controller zu übergeben. Ich bin neu bei MVC. Grundsätzlich muss ich das Bild (Byte-Array) als PDF herunterladen.Notwendigkeit, Byte-Array durch @actionlink zu übergeben

Ausblick:

if(Model.checkimage != null){ 
    @html.ActionLink("Download PDF", "DownloadPDF", "Transaction", new {Check = Model.checkimage}); 
} 

Controller:

public ActionResult downloadPDF (byte[] Check) 
+0

Selbst wenn dies möglich wäre, würde es fast sicher die Abfragezeichenfolgengrenze überschreiten und eine Ausnahme auslösen. Übergeben Sie die ID der Datei an die Methode. –

Antwort

0

Passing Byte-Array als Aktionsmethode Argument ist keine gute Idee. wenn Sie diese aus der Datenbank oder einer Datei abrufen, dann können Sie wahrscheinlich einen eindeutigen Bezeichner oder Dateipfad als Argument übergeben &, dann im Controller die Logik schreiben.

0

Madys Antwort ist die bessere Alternative, aber wenn es nicht praktikabel ist (zB speichern Sie das Byte-Array nicht woanders), können Sie Base-64 immer das Byte-Array in eine Zeichenfolge codieren und diese übergeben in die Aktionsmethode

System.Convert.ToBase64String(Model.checkimage) 

Sie müssen es wieder in ein Byte-Array in Ihrer Aktionsmethode konvertieren.

Base-64-Codierung fügt etwas Bloat hinzu (~ 33% mehr Bytes); In einigen Browsern gibt es außerdem Beschränkungen für die Länge von URLs. Daher sollten Sie sicherstellen, dass Sie diesen Beschränkungen nicht nahe kommen.

Verwandte Themen