问题原因:关闭对话框后,对话框中的脚本仍在运行。如果没有正确处理,便会影响后续的页面使用。
解决方法1:在关闭对话框时,手动执行对应的脚本取消其剩余执行。
示例代码:
//关闭对话框的按钮点击事件 $("#closeDialog").click(function(){ //取消脚本剩余执行 $.each($.validator.pending, function(index, validator) { validator.cancelSubmit = true; }); //关闭对话框 $("#dialog").dialog("close"); });
解决方法2:使用 Ajax.BeginForm() 替代 Html.BeginForm(),在成功返回后重新渲染需要更新的元素。
示例代码:
//在需要使用 AJAX 提交表单的地方使用 Ajax.BeginForm() @using (Ajax.BeginForm("ActionName", "ControllerName", new AjaxOptions() {UpdateTargetId = "result"})) { //此处为表单内容 }
//控制器中的 Action 代码 [HttpPost] public ActionResult ActionName() { //处理表单提交后的逻辑 //执行成功后返回需要更新的元素 return PartialView("_PartialViewName"); }