我正在开发一个ASP.net MVC4 Web应用程序,并希望支持从/到excel功能的导入/导出。我已经编写了导出到excel的代码(或操作),但在编写导入/导出按钮时遇到了麻烦。
具体来说,我只想要只调用导出操作而在当前页面上什么都不做的按钮。
代码
localhost:52725/Excel/ExportToFile?pid=41
项目详情页面:
<div class="btn-group" id="footerButtons">
@Html.ActionLink("Edit Project", "Edit",
new { id = Model.ProjectId },
new { @class = "btn btn-primary " })
@using(Html.BeginForm("ExportToFile", "Excel"))
{
<button class="btn" title="Export to Excel"
type="submit">Export (Excel)</button>
}
@Ajax.ActionLink("Export (Excel)", "ExportToFile", "Excel",
new { pid = Model.ProjectId },
new AjaxOptions { HttpMethod = "Post",
UpdateTargetId="footerButtons", },
new { @class = "btn" })
<!-- Back to results button-->
</div>
Excel控制器
public class ExcelController : ControllerBase
{
public void ExportToFile(int pid = 0)
{
// Code to create and write to excel file
// Main point is it returns nothing which I speculate to be wrong.
}
}
答案 0 :(得分:1)
您希望方法签名看起来像
public FileContentResult ExportToFile(int pid = 0)
以及使用Controller.File方法的输出
类似
return File(fileBytes, "application/vnd.ms-excel", unique generated file name);
从控制器返回并最终将数据发送到浏览器
作为一个简单的测试
return this.File(new System.Text.UTF8Encoding().GetBytes("my plain text content"),
"text/plain",
"my_file.txt");
应返回纯文本文件。