7

我有一个返回 csv 文件的控制器。我想在显示后重定向到一个动作,即返回主视图。控制器逻辑如下图所示:

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");
}
4

1 回答 1

8

简短的版本是,由于 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 属性,但您不限于以这种方式进行操作。

于 2013-06-28T12:21:12.300 回答