MVC3 - 不保存文件到服务器,输出用户下载

时间:2014-05-21 15:54:51

标签: asp.net-mvc-3 epplus

我已经站起来,然后又回来了。这个想法是当用户点击页面上的链接时,控制器方法将准备数据,将其保存到内存流,然后将文件提供给用户。这是我目前的代码:

public ActionResult Export(int id1, int id2)
{
    using (ExcelPackage excelPackage = new ExcelPackage())
    {
        ExcelWorksheet workSheet = excelPackage.Workbook.Worksheets.Add("Test1");

        //Populate worksheet with data...

        MemoryStream stream = new MemoryStream();
        excelPackage.SaveAs(stream);

        stream.Position = 0;

        return File(stream, "application/vnd.ms-excel", "myfilename.xlsx");
    }
}

我的问题是,单击此按钮时,系统不会提示用户抓取该文件。我已经逐步完成了这个方法,似乎没有任何结果,但我对MVC来说相当新,可能会遗漏一些东西。

欢迎任何帮助。

- 编辑 -

我应该提一下,对于我正在处理jquery.click函数中的click的按钮,我通过AJAX实现了上述方法。这会在返回文件时出现问题吗?

     $(".export").click(function () {
     var ID1 = '<%: Model.ID1%>';
     var ID2= '<%: ViewData["ID2"] %>';

     $.ajax({
         url: '<%= Url.Action("Export", "Export") %>',
         type: "GET",
         data: { id1: ID1, id2: ID2},
         async: false,
         success: function () {

         }
     });
 });

1 个答案:

答案 0 :(得分:1)

尝试下一步:

 $(".export").click(function () {
     var ID1 = '<%: Model.ID1%>';
     var ID2= '<%: ViewData["ID2"] %>';

     var url = '<%= Url.Action("Export", "Export") %>?id1'+ ID1+'$id2'+ID2; // format your url
     window.location=url;
}

不确定网址格式,但你明白了。这对我有用。让我知道它是否适合你。