2

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

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

如果添加到数据库成功,我想关闭模式窗口,然后刷新我的主索引页面上的列表。

如果在持久化到数据库时出现一些错误,模式窗口应该保持打开状态,并显示一些错误。

我该如何做到这一点?

这就是我在索引页面上用来弹出窗口的内容

    $("#open").click(function (e) {
        wnd.center();
        wnd.open();
    });
4

1 回答 1

3

您应该返回一个 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');
});
于 2012-11-19T13:16:02.457 回答