我有一个用户必须填写并提交的表格.控制器操作执行一些操作并确定用户可以拥有一个文件,因此重定向到另一个操作,即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"); }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。