我有一個表格,用戶必須填寫並提交。控制器動作做了一些工作,並決定用戶可以擁有一個文件,然後重定向到另一個作爲FilePathResult的動作。什麼是MVC同時發送文件並重定向到新頁面的方式?
[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");
}
我想要做的是將用戶重定向到另一個網頁,其中由於用戶下載的文件,但我不知道如何實現這一目標在「MVC樣」的方式。
我唯一能想到的就是跳過下載動作,而是重定向到ThankYou動作,並讓ThankYou視圖使用JavaScript發送文件。但是這對我來說似乎不是很MVC。有更好的方法嗎?
結果:
接受的答案是不夠正確的,但我想證明我實現它。
它重定向到Index操作變化:
return RedirectToAction("Thankyou");
我加入這個控制器(和視圖)向用戶顯示任何「後下載信息」,並感謝下載該文件說。我從link text中獲取的AutoRefresh屬性顯示了其他一些出色的用途。
[AutoRefresh(ControllerName="Download", ActionName="GetFile", DurationInSeconds=3)]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Thankyou()
{
return View();
}
其重定向到這是相同的,因爲它以前的動作:
[AcceptVerbs(HttpVerbs.Get)]
public FilePathResult GetFile()
{
var fileName = "c:\foo.exe";
return File(fileName, "application/octet-stream", "installer.exe");
}
...謝謝你的回答使我有些不同的研究中,我找到了這個網頁: HTTP: //weblogs.asp.net/rashid/archive/2009/04/29/fun-with-http-headers-in-asp-net-mvc-action-filters.aspx – 2009-07-06 15:14:44