0

を にロードしPartialViewていJquery UI dialogますが、途中で問題が発生した場合はpost methodPartialViewをダイアログに再度ロードします (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));

    }
4

1 に答える 1

1

交換:

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

と:

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

DOM の変更に対して回復力のある活発な方法でフォームの送信イベントをサブスクライブできるようにします。詳細については、.on()メソッドをご覧ください。

于 2013-02-22T15:14:00.907 に答える