【问题标题】:How can I trigger a JQuery dialog to close from an MVC partial view's controller?如何触发 JQuery 对话框以从 MVC 局部视图的控制器关闭?
【发布时间】:2024-01-21 21:55:01
【问题描述】:

我有一个在 JQuery 对话框中呈现的局部视图。我可以使用 javascript 轻松打开和关闭对话框,但我似乎无法从局部视图的控制器中关闭对话框。

我以为我可以只使用 JavascriptResult:

return new JavaScriptResult { Script = "$(\"#popupDiv\").dialog(\"close\");" };

但这只是在浏览器中显示 javascript。

在控制器操作中通知我的 JQuery 对话框关闭的流行方式是什么?

【问题讨论】:

    标签: javascript jquery asp.net-mvc jquery-ui-dialog


    【解决方案1】:

    你提到了局部视图和 javascript 结果,所以我猜这个局部视图是使用 AJAX 调用的。如果是这种情况,您可以在成功回调中关闭对话框:

    $.ajax({
        url: '/someaction',
        success: function(result) {
            $('#popupDiv').dialog('close');
        }
    });
    

    然后您可以让您的控制器操作返回一个 Json 结果,指示此操作的成功或失败。然后在成功回调中,您可以测试此值并在一切正常时关闭对话框并在出现问题时显示错误消息:

    return Json(new { success = true });
    

    然后:

    success: function(result) {
        if (result.success) {
            $('#popupDiv').dialog('close');
        } else {
            alert('Oops something went wrong, sorry');
        }
    }
    

    【讨论】:

    • 这是一个很好的解决方案。谢谢。
    • 提示:如果您的对话框调用其他部分,请考虑在调用 dialog('close') 之前添加 $('#popupDiv').empty() 以删除对话框中的任何标记。