【发布时间】:2016-07-27 19:06:23
【问题描述】:
您好,我在单击按钮时多次打开弹出窗口时遇到问题。我会清楚地解释我的问题。
嗨,这是我的父视图客户表单。如果我输入客户名称地址类型、街道、位置、地点,然后选择区域。假设如果区域不在列表中意味着我必须添加它。所以我点击那个添加按钮,它会打开 AreaPartial 视图作为弹出窗口。
在我输入详细信息并单击创建按钮后,它会将数据保存在 db 中,并且当它关闭时它会显示相同的弹出窗口,这意味着当我单击 x 标记时[位于弹出窗口右上角)。现在一切正常。
现在我的问题是我通过单击按钮打开弹出窗口并添加区域并在单击父视图中的主保存按钮之前关闭弹出窗口我必须添加另一个区域所以我单击添加再次按钮,但它不会打开弹出窗口。这是我的问题。
用于保存部分视图弹出窗口中输入的数据的我的控制器代码
public ActionResult AreaPartialView()
{
ViewBag.CityID = new SelectList(db.Cities, "CityID", "DisplayName");
return View("AreaPartialView");
}
[HttpPost]
public ActionResult AddAreaInfo(CustomerViewModel objareaVM)
{
var objAreaID = Guid.NewGuid();
ViewBag.CityID = new SelectList(db.Cities, "CityID", "DisplayName", objareaVM.CityID);
var ObjArea = new Area()
{
AreaID =objAreaID,
DisplayName = objareaVM.Area,
PrintName = objareaVM.Area,
CityID = objareaVM.CityID,
IsActive = true,
IsDeleted = false,
CreatedDate = DateTime.Now,
EditedDate = DateTime.Now,
LastActiveOn = DateTime.Now,
RowID = Guid.NewGuid(),
CreatedSessionID = Guid.NewGuid(),
EditedSessionID = Guid.NewGuid(),
OfflineMode = false,
OfflineID = Guid.NewGuid()
};
db.Areas.Add(ObjArea);
db.SaveChanges();
ModelState.Clear();
return Json(objAreaID);
}
在父视图中单击添加按钮后,我的 j-query 代码将区域部分视图显示为弹出窗口
<script src="~/Scripts/jquery-1.10.2-ui.js"></script>
<link rel="stylesheet"href="http://code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css" />
<script type="text/javascript">
$("#AddArea").click(function () {
$('#AddAreaNew').dialog("open");
});
$(function () {
$('#AddAreaNew').dialog({
autoOpen: false,
width: 400,
height: 500,
resizable: false,
title: 'Add Area',
modal: true,
open: function (event, ui) {
$(this).load("@Url.Action("AreaPartialView", "Customer")");
},
buttons: {
"Close": function () {
$(this).dialog("close");
}
}
});
});
我的部分查看代码
@Html.Label("Area" , new { @class = "control-label" })
@Html.TextBoxFor(model => model.Area, new { @class = "form-control", type = "text" ,id ="AreaName"})
@Html.ValidationMessageFor(model => model.Area)
@Html.Label("City")
@Html.DropDownList("CityID", null, "Select", new { @class = "form-control " })
<script src="~/Scripts/jquery-1.10.4-ui.min.js"></script>
<link href="~/Content/jquery-ui-1.10.4.custom.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-ui-1.8.24.min.js"></script>
<script type="text/javascript">
function SaveArea() {
debugger;
var Area = $("#AreaName").val();
var CityID = $("#CityID").val();
alert(Area);
var AreaAdd = { "Area": '' +Area + '', "CityID": CityID };
$.post("/Customer/AddAreaInfo", AreaAdd, function(data) {
var option = new Option(Area, data);
$('#AreaID').append($(option));
alert("sucess");
window.close();
});
}
这是我的问题,我无法多次打开弹出窗口。我已尽力解释我的问题。请任何人帮我解决这个问题。
提前谢谢..
【问题讨论】:
-
最好的办法可能是创建一个隐藏的 div 并为其创建一个类。然后一旦你有了它,只需显示或隐藏 div 而不是使用 jquery 的对话框样式。当您实际“关闭”对话框并一起删除部分视图时,可能会导致一些冲突。我还想看看使用 AJAX 将数据发布到您的控制器,因为您已经大量使用 JavaScript。如果你愿意,我可以给你举个例子。
-
是的,我需要一个例子 Dr_FeelGood
-
由于您使用 jquery 打开此对话框,因此您应该在 SaveArea() 方法中使用 $('#AddAreaNew').dialog('close') 而不是 window.close()。跨度>
-
好的,让我试试thangadurai
-
我按照你说的thangadurai给了,但它不起作用..
标签: c# jquery ajax asp.net-mvc-4