我有一个用户必须填写并提交的表格.控制器操作执行一些操作并确定用户可以拥有一个文件,因此重定向到另一个操作,即FilePathResult.
[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,"installer.exe"); }