我有一个视图,显示用户角色列表(例如,管理员,操作员等)和弹出模态窗口的“添加”按钮,允许用户添加新角色。
在我的控制器中,我将此作为我的HttpPost方法
[HttpPost]
public ActionResult Create(RoleModel model)
{
if (ModelState.IsValid)
{
var role = new RoleDto
{
Name = model.Name,
Description = model.Description
};
var roleAdded = _rolePermissionsRepository.AddRole(role);
if (roleAdded != null)
{
//CLOSE WINDOW
}
else
{
//PRINT ERROR MSG TO WINDOW
}
}
return View();
}
如果添加到数据库成功,我想关闭模态窗口,然后刷新主索引页面上的列表。
如果在持久保存到DB时出现错误,则模态窗口应保持打开状态,并显示一些错误。
我如何实现这一目标?
这是我在我的索引页面上用来弹出窗口
$("#open").click(function (e) {
wnd.center();
wnd.open();
});
答案 0 :(得分:2)
你应该返回一个JsonResult来告诉浏览器发生了什么。
[HttpPost]
public ActionResult Create(RoleModel model)
{
if (ModelState.IsValid)
{
var role = new RoleDto
{
Name = model.Name,
Description = model.Description
};
var roleAdded = _rolePermissionsRepository.AddRole(role);
if (roleAdded != null)
{
//CLOSE WINDOW
return Json(new { success = true });
}
else
{
return Json(new { error = "Error! Can't Save Data!" });
}
}
return Json(new { error = "Generic Error Message!" });
}
这是应该在您的wnd页面中运行的javascript,如果有,则显示错误消息,否则关闭窗口。
$('form').submit(function(e) {
e.preventDefault();
$.post(this.action, $(this).serialize(), function(response) {
if(response.error) {
alert(response.error);
}
else {
wnd.close();
}
}, 'json');
});