代码之家  ›  专栏  ›  技术社区  ›  Mark Kadlec

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

  •  4
  • Mark Kadlec  · 技术社区  · 14 年前

    我有一个来自用户的请求,一旦一个按钮被点击,一个PDF表单生成,他们想自动查看,一旦他们关闭PDF页面将已经是一个“最终页面”,而不是他们点击按钮的页面。

    在我的前最后一页中,通过按钮,控制器调用:

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

    但是现在它已经将控件传递给客户端,我无法路由到其他视图。

    关于如何显示新视图有什么好主意吗?

    2 回复  |  直到 14 年前
        1
  •  8
  •   WestDiscGolf    14 年前

    在主控制器上,我将其分解为两个单独的操作,使用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();" />
    
    <% } %>
    

    希望这有帮助:-)

        2
  •  1
  •   Milton Quirino    9 年前

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