在httppost之后关闭模态窗口

时间:2012-11-19 13:10:38

标签: c# javascript asp.net-mvc modal-dialog

我有一个视图,显示用户角色列表(例如,管理员,操作员等)和弹出模态窗口的“添加”按钮,允许用户添加新角色。

在我的控制器中,我将此作为我的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();
    });

1 个答案:

答案 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');
});