弹出对话框形式的行为与其来源不同:编辑视图
Popup dialog form behaves different than it's source: Edit view
我的 Index
视图是数据库中 table 的表示。每行都有 Edit
按钮显示 Edit
使用 jQuery 在弹出对话框中显示的视图。我的这个 table 模型有一些验证,如果我在 Edit
视图中提供了错误的值,它会显示错误消息并允许我更正错误。
当我打开 Edit
通过按钮查看时,意思是在弹出对话框中。输入不正确的值后,它会向我显示错误(虽然一个错误的颜色与其他错误不同,不知道为什么)但它不允许我 select 新值,看起来弹出对话框中的表单在闪烁或清爽。
我不想复制我所有的代码,所以我只分享我认为可能是问题的地方,这些是创建弹出对话框的脚本:
<script>
var Popup;
$(document).ready(function () {
$('#table').DataTable();
});
function PopupForm(url) {
var formDiv = $('<div/>');
$.get(url)
.done(function (response) {
formDiv.html(response);
Popup = formDiv.dialog({
autoOpen: true,
dialogClass: 'zPosition',
resizable: false,
title: 'Fill details',
position: { my: "center top", at: "center top+5%", of: window },
height: 750,
width: 700,
// modal ensures only one dialog window open
//modal: true,
close: function () {
Popup.dialog('destroy').remove();
}
});
});
};
function LoadCursor() {
$('*').css('cursor', 'wait');
};
function SubmitForm(form) {
$('body').css('cursor', 'wait');
$.ajax({
type: "POST",
url: form.action,
data: $(form).serialize(),
success: function (data) {
if (data.success) {
Popup.dialog('close');
location.reload(true);
}
else {
Popup.html(data);
SubmitForm(form);
}
},
complete: function () {
$('body').css('cursor', 'default');
}
});
return false;
};
</script>
控制器:
[HttpPost]
public ActionResult Edit([Bind(Include = "Id,Country,Name")] Person person)
{
ViewBag.Country = new SelectList(db.Countries, "Id", "CountryName", person.Country);
if (ModelState.IsValid)
{
db.Entry(person).State = EntityState.Modified;
db.SaveChanges();
return Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet);
}
return View(person);
}
在正常 Edit
视图中一切正常但在弹出对话框中闪烁,不允许我更改错误的问题是什么?
我没有提供完整的控制器、视图、模型,因为一切都在正常的 Edit
视图中工作,只有在弹出对话框中 Edit
视图无法正常工作。如果还需要什么,我会提供。
我正在使用以下脚本:
<script src="~/Scripts/jquery-ui-1.12.1.js"></script>
<script src="~/Datatables/DataTables-1.10.18/js/jquery.dataTables.js"></script>
<script src="~/Datatables/DataTables-1.10.18/js/dataTables.bootstrap4.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/expressive.annotations.validate.js"></script>
有点愚蠢,但我的 SubmitForm 函数在失败时执行 SubmitForm 函数。
我的 Index
视图是数据库中 table 的表示。每行都有 Edit
按钮显示 Edit
使用 jQuery 在弹出对话框中显示的视图。我的这个 table 模型有一些验证,如果我在 Edit
视图中提供了错误的值,它会显示错误消息并允许我更正错误。
当我打开 Edit
通过按钮查看时,意思是在弹出对话框中。输入不正确的值后,它会向我显示错误(虽然一个错误的颜色与其他错误不同,不知道为什么)但它不允许我 select 新值,看起来弹出对话框中的表单在闪烁或清爽。
我不想复制我所有的代码,所以我只分享我认为可能是问题的地方,这些是创建弹出对话框的脚本:
<script>
var Popup;
$(document).ready(function () {
$('#table').DataTable();
});
function PopupForm(url) {
var formDiv = $('<div/>');
$.get(url)
.done(function (response) {
formDiv.html(response);
Popup = formDiv.dialog({
autoOpen: true,
dialogClass: 'zPosition',
resizable: false,
title: 'Fill details',
position: { my: "center top", at: "center top+5%", of: window },
height: 750,
width: 700,
// modal ensures only one dialog window open
//modal: true,
close: function () {
Popup.dialog('destroy').remove();
}
});
});
};
function LoadCursor() {
$('*').css('cursor', 'wait');
};
function SubmitForm(form) {
$('body').css('cursor', 'wait');
$.ajax({
type: "POST",
url: form.action,
data: $(form).serialize(),
success: function (data) {
if (data.success) {
Popup.dialog('close');
location.reload(true);
}
else {
Popup.html(data);
SubmitForm(form);
}
},
complete: function () {
$('body').css('cursor', 'default');
}
});
return false;
};
</script>
控制器:
[HttpPost]
public ActionResult Edit([Bind(Include = "Id,Country,Name")] Person person)
{
ViewBag.Country = new SelectList(db.Countries, "Id", "CountryName", person.Country);
if (ModelState.IsValid)
{
db.Entry(person).State = EntityState.Modified;
db.SaveChanges();
return Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet);
}
return View(person);
}
在正常 Edit
视图中一切正常但在弹出对话框中闪烁,不允许我更改错误的问题是什么?
我没有提供完整的控制器、视图、模型,因为一切都在正常的 Edit
视图中工作,只有在弹出对话框中 Edit
视图无法正常工作。如果还需要什么,我会提供。
我正在使用以下脚本:
<script src="~/Scripts/jquery-ui-1.12.1.js"></script>
<script src="~/Datatables/DataTables-1.10.18/js/jquery.dataTables.js"></script>
<script src="~/Datatables/DataTables-1.10.18/js/dataTables.bootstrap4.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/expressive.annotations.validate.js"></script>
有点愚蠢,但我的 SubmitForm 函数在失败时执行 SubmitForm 函数。