Ich muss einen Dateidownload in ASP.NET MVC implementieren. Als ich das Web suchte, fand ich Code wie folgt:
%Vor%Das ist nett, aber ich möchte den Inhalt dieser Datei dynamisch erstellen.
Ich weiß, dass ich die Datei dynamisch erstellen und dann die obige Syntax verwenden kann, um diese Datei herunterzuladen. Aber wäre es nicht effizienter, wenn ich meine Inhalte einfach direkt in die Antwort schreiben könnte? Ist das in MVC möglich?
Hier ist eine übermäßig vereinfachte Version des Codes, den ich benutzt habe. Es erfüllt meine Bedürfnisse.
%Vor% Wenn Sie es als Datei herunterladen möchten, dann können Sie eine benutzerdefinierte ActionResult
versuchen, wie @Tungano vorschlagen, sonst, wenn Sie direkt in die Antwort wollen, dann wird die eingebaute ContentResult
tun, aber es wird funktionieren mit einfachen Strings und im komplexen Szenario müssen Sie es erweitern.
Sie können direkt in Response.OutputStream schreiben, ähnlich wie Sie in eine Datei streamen würden. Um es überprüfbar und MVC'ish zu halten, können Sie Ihre eigene ActionResult-Klasse erstellen, die das Streaming eines Modellobjekts durchführt, an dem Sie es übergeben.
Eine alternative Lösung besteht darin, die Überladung für File () zu verwenden, die einen Stream akzeptiert.
In meinem Fall ist es ein csv, das ich von einer Controller-Aktion erzeugen muss, also ist es ein bisschen so:
%Vor%Beachten Sie, dass nicht den Stream oder den StreamWriter vor der Übergabe an die File () -Funktion entsorgen sollte, da das Löschen des Streams den Stream unbrauchbar macht.
Tags und Links asp.net-mvc