MVC2 - Отправить форму с AJAX и не AJAX - PullRequest
0 голосов
/ 10 февраля 2012

Используя MVC2, я создал форму, используя помощник Ajax в представлении. Форма отправляет сообщение контроллеру, который привязывается к модельному объекту. PartialViewResult возвращается контроллером, а HTML-код обновляется в div. Пока все хорошо.

Теперь мне нужно отправить ту же форму и вернуть результаты в сгенерированный файл для загрузки пользователем. Очевидно, я не хочу, чтобы содержимое файла попадало в мой div.

Есть ли элегантный способ справиться с этой ситуацией, не разбивая ее на куски? Я довольно новичок в MVC / AJAX, и для меня это все еще путаница.

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

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

Ссылка ToggleAjax.js на моей странице:

var ToggleAjax = function ($, form) {
    var onclick = form.onclick,
        onsubmit = form.onsubmit;

    $('input[class*="ajax-enabled"]').click(function () {
        form.onclick = onclick;
        form.onsubmit = onsubmit;
    });
    $('input[class*="ajax-disabled"]').click(function () {
        form.onclick = function () { };
        form.onsubmit = function () { };
    });
};

Затем я вызываю ToggleAjax на своей странице и передаюв форме:

$(function () {
    ToggleAjax($, $('form')[0]);
});

И, конечно, я добавляю класс ajax-enabled или ajax-disabled к элементам управления вводом.

1 голос
/ 10 февраля 2012

Вы не можете использовать ajax call для загрузки файлов.Следующие ссылки могут помочь вам сделать то, что вы пытаетесь сделать JQuery Ajax для загрузки файла PDF
http://forums.asp.net/t/1683990.aspx/1

...