在ASP MVC中,如何将新视图和文件返回给用户?

时间:2010-09-07 23:30:03

标签: asp.net-mvc asp.net-mvc-2

以为我会把这个问题提交给StackOverflow人群,因为我的想法已经用完了。

我收到用户的请求,一旦点击一个按钮,就会生成一个他们想要自动查看的PDF表单,一旦他们关闭PDF,页面就会成为“最终页面”,而不是页面点击了按钮。

在带有按钮的前期最后一页中,控制器调用:

return File(finalForm, "application/pdf", Server.HtmlEncode(finalForm));

但是现在这已经将控制传递给了客户端,我无法路由到另一个视图。

关于如何显示新视图的任何聪明的想法?

2 个答案:

答案 0 :(得分:8)

我已将其分解为Home Controller上的两个单独操作,使用FinalPage操作作为重定向到的视图,将GetFile操作作为返回文件本身的操作。

<强>控制器

    public ActionResult GetFile()
    {
        return File(@"path to pdf.pdf", "application/pdf");
    }

    public ActionResult FinalPage()
    {
        return View();
    }

查看

<script>

    function showfile() {
        window.open('<%= Url.Action("GetFile", "Home")%>')
    }

</script>

<%= Html.ActionLink("click", "FinalPage", "Home", null, new { onclick = "return showfile();" }) %>

这将打开一个新窗口并返回显示的文件,但也会将其他浏览器窗口移动到同一次点击的最终页面上。

希望这有帮助。

修改

更新为按照评论运行提交按钮...回答评论,是的,您可以通过提交按钮执行: - )

<script>

    function showfile() {
        window.open('<%= Url.Action("GetFile", "Home")%>')
    }

</script>

<% using(Html.BeginForm("FinalPage", "Home")) { %>

    <input type="Submit" value="click" onclick="return showfile();" />

<% } %>

希望这会有所帮助: - )

答案 1 :(得分:1)

WestDiscGolf,在同一页面上下载使用&#39; _self&#39; :

function showfile() {
        window.open('PATH','_self')
    }