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

Mar*_*lec 4 asp.net-mvc asp.net-mvc-2

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

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

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

return File(finalForm, "application/pdf", Server.HtmlEncode(finalForm));
Run Code Online (Sandbox Code Playgroud)

但是这已经将控制权传递给了客户端,我无法路由到另一个View.

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

Wes*_*olf 8

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

调节器

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

    public ActionResult FinalPage()
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

视图

<script>

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

</script>

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

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

希望这可以帮助.

编辑

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

<script>

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

</script>

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

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

<% } %>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :-)