0
我正在將PartialView
加載到Jquery UI dialog
中,如果在post method
期間出錯,我將PartialView
再次加載到對話框中(例如ModelState
錯誤)。在這一點上,我的阿賈克斯sumbit不再工作。它只是重定向我,它不應該。根據結果驗證關閉jquery對話框
我的代碼有什麼問題?這是我曾嘗試:
$('#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));
}
好的。非常感謝你 !!這解決了我提交的問題,但是如何驗證是否存在驗證錯誤?我的意思是,如果提交已完成關閉對話框。 if($(「#myForm」).valid()){does not work – Kosmog 2013-02-22 15:23:31
你可以讓你的控制器動作返回一個PartialViewResult,它包含帶有驗證錯誤的表單和錯誤情況下的驗證錯誤,以及成功時的JsonResult。然後在你的AJAX請求的成功回調中,你可以測試你是在哪種情況下采取相應行動。 – 2013-02-22 15:28:13
我愛你! :))。我認爲,但我不知道它會工作,如果我的返回類型是ActionResult,我從來沒有嘗試過。 – Kosmog 2013-02-22 15:36:25