当用户完成表单后,用户将被重定向到感谢页面。感谢页面将呈现它的视图,但也下载文件(pdf / a stream)。
我更喜欢这样做,而不使用像这样的JavaScript return both a file and a rendered view in an MVC3 Controller action我希望得到另存为对话框。
MVC是否有任何可以处理此问题的约定?
答案 0 :(得分:2)
正如@BenRobinson指出的那样,您无法从单个请求中返回两个响应。不,MVC没有任何约定来处理这个问题,因为它是您正在开发的平台,特别是TCP / IP和HTTP协议的基本限制。
从根本上说,网络围绕着所谓的请求 - 响应周期。客户端(通常是Web浏览器)向服务器发出请求,该服务器使用请求的资源进行响应。您正在谈论的内容类似于请求 - 响应 - 响应,这是不可能的。在没有先收到请求的情况下,服务器不能只向上发送并向客户端发送响应。
因此,您的选择是:
使用JavaScript以编程方式发出其他请求,例如将location.href
设置为链接问题的接受答案。
提供一个链接/按钮/其他任何内容,以允许用户手动发起文件请求。
那就是它。无论哪种方式,您都需要一个新的请求,由JavaScript或最终用户发起以获取文件。
答案 1 :(得分:1)
你有没有尝试过meta refresh Trick。
<META HTTP-EQUIV='REFRESH' CONTENT='5;URL=http://www.example.com/test.txt'>
请记住为要在浏览器中下载的文件设置标题Content-Disposition: attachment
。