Ich habe ein Formular, das Benutzer ausfüllen und einreichen müssen. Die Controller-Aktion führt einige Arbeit aus und entscheidet, dass der Benutzer eine Datei haben kann und so zu einer anderen Aktion umleitet, die ein FilePathResult ist.
%Vor%Was ich tun möchte, ist, den Benutzer auf eine andere Seite umzuleiten, die dem Benutzer für das Herunterladen der Datei dankt, aber ich bin mir nicht sicher, wie das auf eine "MVC-ähnliche" Weise zu erreichen ist.
Der einzige Weg, über den ich mir Gedanken machen kann, ist, die Download-Aktion zu überspringen und stattdessen zur ThankYou-Aktion umzuleiten und die ThankYou-Ansicht dazu zu nutzen, Javascript zum Senden der Datei zu verwenden. Aber das scheint mir nicht sehr MVC. Gibt es einen besseren Ansatz?
Ergebnisse:
Die angenommene Antwort ist korrekt genug, aber ich wollte zeigen, dass ich sie implementiert habe.
Die Indexaktion ändert sich, wenn sie an Folgendes weitergeleitet wird:
%Vor%Ich habe diesen Controller (und die Ansicht) hinzugefügt, um dem Benutzer irgendwelche "Post-Download-Informationen" zu zeigen und um Danke für das Herunterladen der Datei zu sagen. Das AutoRefresh-Attribut, das ich aus link text , der einige andere hervorragende Anwendungen zeigt.
%Vor%Die Aktion, auf die umgeleitet wird, ist dieselbe wie zuvor:
%Vor%Fügen Sie Ihrer Antwort in der Aktion für Ihre umgeleitete Seite einfach eine Kopfzeile hinzu.
Googeln kam mit diesem Header:
%Vor%In Ihrem Fall würde die URL durch die URL Ihrer Download-Aktion ersetzt werden
Wie die Seite, die ich gerade gelesen habe, sagt, ist die Zahl 5 die Anzahl der Sekunden, die gewartet werden muss, bevor die URL aktualisiert wird.
Da die Datei ein Download ist, sollte sie Sie nicht von Ihrer netten Weiterleitungsseite entfernen:)
Tags und Links asp.net-mvc controller