Sai*_*udo 8 asp.net-mvc controller
我有一个用户必须填写并提交的表格.控制器操作执行一些操作并确定用户可以拥有一个文件,因此重定向到另一个操作,即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");
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将用户重定向到另一个页面,感谢用户下载文件,但我不知道如何以"类似MVC"的方式实现这一点.
我能想到的唯一方法是跳过下载操作,而是重定向到ThankYou操作,并让ThankYou视图使用javascript发送文件.但这对我来说似乎不是MVC.有更好的方法吗?
结果:
接受的答案是正确的,但我想表明我实现了它.
Index操作会在重定向到的位置发生更改:
return RedirectToAction("Thankyou");
Run Code Online (Sandbox Code Playgroud)
我添加了此控制器(和视图)以向用户显示任何"发布下载信息"并感谢您下载该文件.我从链接文本中抓取的AutoRefresh属性显示了一些其他优秀用途.
[AutoRefresh(ControllerName="Download", ActionName="GetFile", DurationInSeconds=3)]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Thankyou()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
重定向到的动作与以前一样:
[AcceptVerbs(HttpVerbs.Get)]
public FilePathResult GetFile()
{
var fileName = "c:\foo.exe";
return File(fileName, "application/octet-stream", "installer.exe");
}
Run Code Online (Sandbox Code Playgroud)
Sek*_*hat 11
只需在重定向页面的操作中为响应添加标题即可.
谷歌搜索出现了这个标题:
Refresh: 5; URL=http://host/path
Run Code Online (Sandbox Code Playgroud)
在您的情况下,URL将替换为您的下载操作的URL
正如我正在阅读的页面所说,数字5是在"刷新"到网址之前等待的秒数.
随着文件的下载,它不应该让你离开漂亮的重定向页面:)
归档时间: |
|
查看次数: |
3748 次 |
最近记录: |