我已经站起来,然后又回来了。这个想法是当用户点击页面上的链接时,控制器方法将准备数据,将其保存到内存流,然后将文件提供给用户。这是我目前的代码:
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 () {
}
});
});
答案 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;
}
不确定网址格式,但你明白了。这对我有用。让我知道它是否适合你。