根据结果​​验证关闭Jquery对话框

时间:2013-02-22 15:04:53

标签: ajax asp.net-mvc mvvm form-submit

我正在将PartialView加载到Jquery UI dialog中,如果在post method期间出现问题,我会再次将PartialView重新加载到对话框中(ModelState错误例如 ) 。此时我的ajax sumbit不再起作用了。它只是重定向我,它不应该。

我的代码有什么问题?这是我尝试过的:

$('#editdialog').dialog({
        autoOpen: false,
        width: '900px',
        modal: true,
        open: function (event, ui) {
            $(this).load('Controller action', function (html) {
                $('#incarcerationForm').submit(function () {
                    $.ajax({
                        url: 'Controller action',
                        data: $("#myForm").serialize(),
                        type: "POST",
                        success: function (data) {
                            $('#editdialog').html(data);

                            $.validator.unobtrusive.parse($("#myForm"));

                            if ($("#myForm").valid()) {
                                GetDetails(@Model.FormModel.ID);
                                $('#editdialog').dialog('close');
                                console.log("myForm was edited successfully");
                                return false;
                            }

                            return false;

                        },
                        error: function (data) {
                            $('#editdialog').html(data);
                            console.log("error at edit myForm");
                            return false;
                        }
                    });
                    return false;
                });
                return false;
            });
        }

    });

我的[HttpPost] Controller行动:

  public ActionResult Create(Mymodel viewModel)
    {   
         return CheckValidBusiness(() => 
           { 
             viewModel.Save(viewModel.FormModel); return true; 
           })
        .Valid(() => PartialView(viewModel))
        .Invalid(() => PartialView(viewModel));

    }

1 个答案:

答案 0 :(得分:1)

替换:

$('#incarcerationForm').submit(function () {

使用:

$(document).on('submit', '#incarcerationForm', function () {

这样您就可以生动的方式订阅表单的提交事件,这将对DOM更改具有弹性。有关详细信息,请查看.on()方法。