2010-09-07 46 views
3

因爲我已經沒有想法,所以想到我將這個問題提交給StackOverflow的人羣。在ASP MVC中,我如何返回一個新的視圖和一個文件給用戶?

我有一個來自用戶的請求,一旦點擊一個按鈕,就會生成一個他們希望自動查看的PDF表單,一旦他們關閉了PDF頁面就會成爲「最終頁面」,而不是頁面他們點擊了按鈕。

在我與按鈕半成品頁面時,控制器調用:

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

,但是現在已經通過了控制到客戶端,我可以到不同的景觀視野路線。

關於我如何還可以顯示新視圖的任何聰明的想法?

+0

也許會返回最終頁面的視圖,但在客戶端的原始按鈕的單擊事件中也會爲PDF打開一個新窗口? – David 2010-09-07 23:36:36

+0

我在想自己David,你有沒有從客戶端點擊事件中調用Server ActionMethod的例子?這聽起來像可能會工作... – 2010-09-08 01:35:27

回答

6

我已經將它分解爲兩個獨立的主控制器操作,使用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();" /> 

<% } %> 

希望這有助於:-)

+0

這是偉大的,我很欣賞這個例子,非常清楚! – 2010-09-08 15:50:39

+0

我目前有一個按鈕( 2010-09-08 15:57:15

+0

是的,請查看答案的更新。希望它有助於:-) – WestDiscGolf 2010-09-09 08:47:58

1

WestDiscGolf,下載同一個網頁上使用 '_self':

function showfile() { 
     window.open('PATH','_self') 
    } 
相關問題