Как получить модальную форму для публикации в MVC action - PullRequest
1 голос
/ 07 января 2011

Я создал модальное всплывающее имя входа, используя этот учебник

Учебник модальной формы

Теперь я дошел до модальной формы.Ничего не происходит, когда я нажимаю кнопку «Отправить» (нормальная форма отлично работает, если не в модальном режиме), поэтому мой вопрос двоякий: -

  1. Как мне получить сообщение «Отправить»Действие входа в контроллере моей учетной записи.
  2. Как получить ошибки проверки для отображения в модале?

Это скрипт, который создает учебник: -

(function ($) {
var alog = window.console ? console.log : alert;

$.fn.popUpForm = function (options) {
    // REQUIRE a container
    if (!options.container) { alert('Container Option Required'); return; }

    // Give us someplace to attach forms
    $("#popUpHide").length || $('<div id="popUpHide" />').appendTo('body').css('display', 'none');

    // Defaults and options
    var defaults = {
        container: '',
        modal: true,
        resizeable: false,
        width: 440,
        title: 'Website Form',
        beforeOpen: function (container) { },
        onSuccess: function (container) { },
        onError: function (container) { }
    };
    var opts = $.extend({}, defaults, options);

    this.each(function () {
        var $this = $(this);

        if (!$this.is('a') || $this.attr('href') == '') { return; }

        var SRC = $this.attr('href') + ' ' + opts.container;

        var formDOM = $("<div />").load(SRC, function () {
            $('#popUpHide').append(formDOM);

            $(opts.container).dialog({
                autoOpen: false,
                width: opts.width,
                modal: opts.modal,
                resizable: opts.resizeable,
                title: opts.title
            });

            $(opts.container).bind("submit", function (e) {
                e.preventDefault();
                ajaxSubmit($this[0]);
            });

            $this.bind("click", function (e) {
                e.preventDefault();
                opts.beforeOpen.call($this[0], opts.container);
                $(opts.container).dialog('open');
            });
        });

    });

    function ajaxSubmit(anchorObj) {
        console.log(anchorObj);
        var form = $(opts.container);
        var method = form.attr('method') || 'GET';

        $.ajax({
            type: method,
            url: form.attr('action'),
            data: form.serialize(),
            success: function () {
                $(opts.container).dialog('close');
                opts.onSuccess.call(anchorObj, opts.container);
            },
            error: function () {
                opts.onError.call(anchorObj, opts.container);
            }
        });
    }
}
})(jQuery);

Спасибо за любые идеи,

Rich

1 Ответ

0 голосов
/ 07 января 2011

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

Также проверьте эти две статьи:

тонирование-модальный-диалог-с-САШ-* 1006 MVC *

грациозная-модальность-с-САШИ-MVC2

...