Выбор между Ajax и полной обратной передачей во время выполнения - PullRequest
0 голосов
/ 22 июня 2011

У меня есть представление MVC 3 для рендеринга отчетов из служб отчетов SQL Server. Вверху есть форма, где я собираю параметры для отчета и при отправке, мое действие контроллера должным образом вызывается, и мой отчет преобразуется в

.

Я сейчас добавляю функцию экспорта в Excel. Мне нужны те же параметры из формы, но на этот раз я хочу полную обратную передачу, а не Ajax-вызов контроллера, чтобы пользователю была предоставлена ​​возможность загрузить отчет. В противном случае мой отчет отображается в виде двоичного содержимого в существующем представлении.

Я думаю, что хочу иметь возможность переключать поведение моей формы между Ajax и обычным Postback, в зависимости от того, какую кнопку «отправить» нажимаю.

Есть идеи?

1 Ответ

1 голос
/ 22 июня 2011
@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>

и затем AJAXify ссылка Render report в отдельном js-файле:

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

и в вашем ReportController вы будете иметь действия Export и Render.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...