2 Stimmen

Wie kann ich sowohl ein File()-ActionResult als auch ein View() zurückgeben?

Meine MVC3-Website lädt eine .txt-Datei an den Benutzer herunter. Ich möchte, dass die Download-Methode meines Controllers die Geschäftslogikschicht kontaktiert, dann den Download durchführt und dann zu einer neuen Ansicht umleitet, die den erfolgreichen Download ankündigt. Das Problem ist, dass ich eine Ansicht oder eine Datei zurückgeben kann, aber nicht beides.

[HttpPost]
    public ActionResult Download(FormCollection collection)
    {

            //Contact BLL no problem

            return File(Encoding.ASCII.GetBytes("Testing"), "text/plain", "Test.txt");
            //OR
            return RedirectToAction("OtherActionWithOtherView");
    }

Ich bin froh, wenn ich das anders angehen kann; für Vorschläge wäre ich dankbar!

1voto

SliverNinja - MSFT Punkte 29965

Sie müssen eine Ansichtsseite bereitstellen, die einen HTML-Link zur Dateidownload-Aktion oder einen eingebetteten IFrame mit src-Tag enthält, der der Dateidownload-Aktion zugeordnet ist.

0voto

SLaks Punkte 832502

HTTP kann das nicht tun.

Geben Sie stattdessen nur die Ansicht zurück, und setzen Sie eine <meta http-equiv="refresh"> Tag in der Ansicht, die zum Download weiterleitet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X