【问题标题】:Closing a modal window after httpposthttppost 后关闭模态窗口
【发布时间】:2012-11-19 21:16:02
【问题描述】:

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

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

【问题讨论】:

  • wnd 是什么?它是一个 jQuery UI 对话框还是什么?
  • 我正在使用剑道 UI 进行模态弹出,但我相信这个概念应该是相似的?

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


【解决方案1】:

你应该返回一个 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');
});

【讨论】:

  • 如何引用 wnd.close() 因为 wnd 是在我的索引页面中创建的。当我点击我的索引页面上的“添加”按钮时,我会弹出我的模态窗口并在其中加载一个视图。
  • 一定有办法用代码关闭wnd。我不熟悉剑道 UI,但你能找到任何带有“关闭”按钮的对话框示例吗?查看该按钮的事件处理程序。
  • var visibleWindow = $(".k-window:visible > .k-windowcontent"); visibleWindow.data("kendoWindow").close(); 得到它与上面的工作,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多