2013-06-28 93 views
3

我有一個控制器,返回csv文件。我想在顯示後重定向到某個操作,即返回到主視圖。 控制器邏輯如下:ASP.net MVC返回文件和重定向

public ActionResult DownloadCSV(string fileName) 
{ 
    string csv; 
    using (StreamReader sr = new StreamReader(fileName)) 
    { 
     csv = sr.ReadToEnd(); 
    } 
    return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "Export.csv"); 
} 
+3

HTTP不支持。 – SLaks

+0

嗨,我應該是說,這個動作是從另一個控制器創建文件,它不是從視圖調用 – Simon

+0

返回RedirectToAction(「DownloadCSV」,新{fileName = exportedCancelFile}); – Simon

回答

5

短的版本是,你不能強迫一個文件下載和HTTP因限制的同樣的動作重定向。但是您可以通過使用window.open打開文件下載操作來強制下載。

例子:

<a href="Action/RedirectPage" data-file="Action/DownloadCVS" class="file-download">Download File</a> 

<script> 
    $(function() { 
     $('a.file-download').click(function() { 
     window.open($(this).data('file')); 
     }); 
    }); 
</script> 

在這種情況下,我使用HTML5屬性,但你不侷限於做這種方式。