получение значений из вложенного сложного объекта, который передается в частичное представление

У меня была такая же проблема. Мое решение заключалось в использовании временных файлов, так как я уже создавал кучу временных файлов. Форма отправляется с помощью:

var microBox = {
    show : function(content) {
        $(document.body).append('<div id="microBox_overlay"></div><div id="microBox_window"><div id="microBox_frame"><div id="microBox">' +
        content + '</div></div></div>');
        return $('#microBox_overlay');
    },

    close : function() {
        $('#microBox_overlay').remove();
        $('#microBox_window').remove();
    }
};

$.fn.bgForm = function(content, callback) {
    // Create an iframe as target of form submit
    var id = 'bgForm' + (new Date().getTime());
    var $iframe = $('<iframe id="' + id + '" name="' + id + '" style="display: none;" src="about:blank"></iframe>')
        .appendTo(document.body);
    var $form = this;
    // Submittal to an iframe target prevents page refresh
    $form.attr('target', id);
    // The first load event is called when about:blank is loaded
    $iframe.one('load', function() {
        // Attach listener to load events that occur after successful form submittal
        $iframe.load(function() {
            microBox.close();
            if (typeof(callback) == 'function') {
                var iframe = $iframe[0];
                var doc = iframe.contentWindow.document;
                var data = doc.body.innerHTML;
                callback(data);
            }
        });
    });

    this.submit(function() {
        microBox.show(content);
    });

    return this;
};

$('#myForm').bgForm('Please wait...');

В конце скрипта, который генерирует файл, который у меня есть:

header('Refresh: 0;url=fetch.php?token=' . $token);
echo '<html></html>';

Это приведет к тому, что событие load на iframe будет уволена. Затем сообщение ожидания будет закрыто, и загрузка файла начнется. Протестировано на IE7 и Firefox.

23
задан Blair Holmes 22 April 2015 в 21:49
поделиться

1 ответ

Если Вы используете помощников тега, partial, помощник тега принимает for атрибут, который делает то, что Вы ожидаете.

<partial name="MyPartialView" for="ComplexModel" />

Используя эти for атрибут, а не типичное model атрибут, заставит все поля формы в частичном быть названными с ComplexModel. префикс.

0
ответ дан 28 November 2019 в 23:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: