我希望有人能指出我关于Ajax帖子的正确方向。我有一个很长的表格,其中有许多问题根据所选的先前值进行切换。
当我使用Ajax发布表单时,表单提交成功并且_Success
部分正确显示。但是,如果我在表单中输入错误然后提交。在回发后,所有JQuery都停止正确地运行MVC @Html.ValidationMessageFor
显示,但切换的字段将与绿色验证一起重置。
如何保持以前的状态?或者我做错了,还有更好的方法吗?
提前致谢!
我的代码示例:
查看
<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);
答案 0 :(得分:1)
要重新启用验证,您可以将表单追加回jquery验证程序。这应该在追加自己之后处理。
var form = $("#myForm");
form.removeData('validator');
form.removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(form);
如果你使用一些jquery插件,也可能需要重新激活那些切换。