我有一个MVC 3视图,用于从SQL Server Reporting Services呈现报表。在顶部有一个表单,我捕获报告的参数,在提交时,我的控制器操作被尽职尽责地调用,我的报告被呈现为< div>。
我现在正在添加导出到Excel功能。我想从表单中获取相同的参数,但这一次,我想要一个完整的Postback,而不是对控制器的Ajax调用,以便用户有机会下载报告。否则,我的报告将在现有视图中呈现为二进制内容。
我认为我希望能够在Ajax和普通回发之间切换表单的行为,具体取决于我点击的“提交”按钮。
有什么想法吗?
答案 0 :(得分:1)
@using (Html.BeginForm("Export", "Report"))
{
... some form fields
@Html.ActionLink("Render report", "Render", "Report", null, new { id = "generateReport" })
<input type="submit" value="Export to Excel">
}
<div id="report"></div>
然后在单独的js文件中AJAX化渲染报告链接:
$(function() {
$('#generateReport').click(function() {
var form = $(this).closest('form');
$.post(this.href, form.serialize(), function(result) {
$('#report').html(result);
});
return false;
});
});
在您的ReportController
中,您将同时执行Export
和Render
次行动。