开发者

Choosing between Ajax and full Postback at runtime

开发者 https://www.devze.com 2023-03-15 02:03 出处:网络
I have an MVC 3 view for rendering reports from SQL Server Reporting Services. There\'s a form at the top where I capture parameters for the report and on submission, my controller action is dutifully

I have an MVC 3 view for rendering reports from SQL Server Reporting Services. There's a form at the top where I capture parameters for the report and on submission, my controller action is dutifully called and my report is rendered into a < div >.

I'm now adding an Export to Excel function. I want the same parameters开发者_JAVA百科 from the form, but this time, I want a full Postback, not an Ajax call to the controller, so that the user is offered the opportunity to download the report. Otherwise, my report gets rendered as binary content on the existing view.

I'm thinking that I want to be able to switch the behaviour of my form between Ajax and normal Postback, depending on which 'submit' button I click.

Any ideas?


@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>

and then AJAXify the Render report link in a separate js file:

$(function() {
    $('#generateReport').click(function() {
        var form = $(this).closest('form');
        $.post(this.href, form.serialize(), function(result) {
            $('#report').html(result);
        });
        return false;
    });
});

and in your ReportController you would have both Export and Render actions.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号