我正在将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));
}
答案 0 :(得分:1)
替换:
$('#incarcerationForm').submit(function () {
使用:
$(document).on('submit', '#incarcerationForm', function () {
这样您就可以生动的方式订阅表单的提交事件,这将对DOM更改具有弹性。有关详细信息,请查看.on()
方法。