在运行时选择Ajax和完整的Postback

时间:2011-06-22 10:39:50

标签: ajax asp.net-mvc-3

我有一个MVC 3视图,用于从SQL Server Reporting Services呈现报表。在顶部有一个表单,我捕获报告的参数,在提交时,我的控制器操作被尽职尽责地调用,我的报告被呈现为< div>。

我现在正在添加导出到Excel功能。我想从表单中获取相同的参数,但这一次,我想要一个完整的Postback,而不是对控制器的Ajax调用,以便用户有机会下载报告。否则,我的报告将在现有视图中呈现为二进制内容。

我认为我希望能够在Ajax和普通回发之间切换表单的行为,具体取决于我点击的“提交”按钮。

有什么想法吗?

1 个答案:

答案 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中,您将同时执行ExportRender次行动。