MVC发布表单使用Ajax进行回发表单状态和JQuery重置

时间:2017-04-19 12:51:23

标签: jquery ajax asp.net-mvc

我希望有人能指出我关于Ajax帖子的正确方向。我有一个很长的表格,其中有许多问题根据所选的先前值进行切换。 当我使用Ajax发布表单时,表单提交成功并且_Success部分正确显示。但是,如果我在表单中输入错误然后提交。在回发后,所有JQuery都停止正确地运行MVC @Html.ValidationMessageFor显示,但切换的字段将与绿色验证一起重置。

如何保持以前的状态?或者我做错了,还有更好的方法吗?

提前致谢!

Form field before submit

Form After submit toggled question now hidden and colour missing

我的代码示例:

查看

<div id="test-container">
    @Html.Partial("_PartialView",Model)
</div>

部分视图

<form method="post" action="@Url.Action("SendReport","Report")" data-form-ajax="true" data-form-target="#test-container">


// form fields here

控制器

if (Request.IsAjaxRequest())
            {
                if (!ModelState.IsValid)
                {
                    // set model 
                    return PartialView("_PartialView",model);
                }

                // more model methods

                if (model.RecordMessage.Type == MessageType.Success)
                {
                    return PartialView("_Success", model);
                }
                else
                {
                    return PartialView("_PartialView", model);
                }
            }

的Ajax

var ajaxSubmitForm = function () {


    var $form = $(this);

    var options = {
        url: $form.attr("action"),
        type: $form.attr("method"),
        data: $form.serialize()
    };

    $.ajax(options).done(function (data) {


        $("#test-container").html("");
        $("#test-container").append(data);
    });

    return false;
};


$("form[data-form-ajax='true']").submit(ajaxSubmitForm);

1 个答案:

答案 0 :(得分:1)

要重新启用验证,您可以将表单追加回jquery验证程序。这应该在追加自己之后处理。

var form = $("#myForm");
form.removeData('validator');
form.removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(form);

如果你使用一些jquery插件,也可能需要重新激活那些切换。