如何获取模式表单以发布到MVC操作

时间:2011-01-07 10:57:39

标签: jquery asp.net-mvc forms jquery-ui-dialog

我使用本教程

创建了一个模态弹出窗口

Modal Form Tutorial

现在这让我想到弹出的模态形式。当我点击我的提交按钮时没有任何反应(正常形式在不是模态时工作正常),所以我的问题有两个: -

  1. 如何让提交在我的帐户控制器中发布到我的登录操作。
  2. 如何在模式中显示任何验证错误?
  3. 这是教程产生的脚本: -

    (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);
    

    感谢任何想法,

1 个答案:

答案 0 :(得分:0)

我不确定是这种情况,但是以模态形式 - 尝试与托管视图中的控制器保持相同的控制器。我认为当视图在一个控制器上并且上面的模式使用另一个控制器时,MVC有问题。

同时检查这两篇文章:

rendering-modal-dialog-with-aspnet-mvc

graceful-modals-with-aspnet-mvc2