Ho un modulo che gli utenti devono compilare e inviare. L'azione del controller fa un po 'di lavoro e decide che l'utente può avere un file e quindi reindirizza a un'altra azione che è FilePathResult.Qual è il modo MVC di inviare simultaneamente un file e reindirizzare a una nuova pagina?
[CaptchaValidator]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection collection)
{
// do some stuff ...
return RedirectToAction("Download");
}
[AcceptVerbs(HttpVerbs.Get)]
public FilePathResult Download()
{
var fileName = "c:\foo.exe";
return File(fileName, "application/octet-stream", "installer.exe");
}
Quello che vorrei fare è reindirizzare l'utente ad un'altra pagina che grazie l'utente per il download ma non sono sicuro di come realizzare questo in un modo "MVC-like".
L'unico modo in cui riesco a pensare in cima alla mia testa è saltare l'azione Download e reindirizzare invece all'azione ThankYou, e avere la view ThankYou usare javascript per inviare il file. Ma questo non mi sembra molto MVC. C'è un approccio migliore?
Risultati:
La risposta accettata è abbastanza corretto, ma ho voluto mostrare che ho implementato.
I cambiamenti azione index dove reindirizza a:
return RedirectToAction("Thankyou");
ho aggiunto questo controller (e vista) per mostrare all'utente alcuna "informazione successiva download" e per dire grazie per il download. L'attributo AutoRefresh che ho acquisito da link text mostra alcuni altri usi eccellenti.
[AutoRefresh(ControllerName="Download", ActionName="GetFile", DurationInSeconds=3)]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Thankyou()
{
return View();
}
L'azione che reindirizzati è la stessa come era prima:
[AcceptVerbs(HttpVerbs.Get)]
public FilePathResult GetFile()
{
var fileName = "c:\foo.exe";
return File(fileName, "application/octet-stream", "installer.exe");
}
Grazie ... la tua risposta mi portano a un po 'diverso ricerca in cui ho trovato questa pagina: http: //weblogs.asp.net/rashid/archive/2009/04/29/fun-with-http-headers-in-asp-net-mvc-action-filters.aspx –
Cool, felice di poterti aiutare. Mi piace il metodo dell'attributo. Lo fa sembrare bello. Ma non è meno MVC solo per aggiungere le intestazioni manualmente se necessario. – Sekhat