2010-07-12 68 views
1

我從JavaScript調用文件下載操作:ASP.NET MVC如何在不離開當前頁面的情況下從文件下載操作返回錯誤?

$elem.click(function() { 
    window.location.href = 'MyController/MyFileDownloadAction'; 
}); 

控制器返回一個文件:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult MyFileDownloadAction() 
{ 
    /* do some processing, generate an in-memory file... */ 

    return File(myFileStream, "text/plain", myFileName); 
} 

這個動作拋出異常的一個相當高的情形產生(或至少不能夠返回文件)。

由於應用程序的性質(其中包含大量動態內容),在這種情況下,我無法真正重定向到錯誤頁面。當前頁面需要以某種方式保持打開狀態。

所以我理想地尋找類似javascript彈出窗口的東西,但afaik這是不可能的,因爲我不知道任何方式在非Ajax控制器調用中返回一個javacript指令。如果我顯示一個錯誤頁面,我需要強制它在新窗口中打開一些方法。有沒有解決這個問題的方法?

回答

0

我不相信有可能做你想做的。只要你做了一個「window.location.href ='somelocation'」,你就會指示當前的瀏覽器窗口請求'somelocation'並呈現結果,不管它是什麼。因此,您需要將結果中的任何錯誤信息輸出到該請求。

現在,沒有理由需要重定向到錯誤頁面。您可以返回包含錯誤消息或任何其他類型結果的ViewResult。

相關問題