如何触发JQuery对话框以关闭MVC局部视图的控制器?

Mik*_*ras 5 javascript asp.net-mvc jquery jquery-ui-dialog

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

我以为我可以使用JavascriptResult:

return new JavaScriptResult { Script = "$(\"#popupDiv\").dialog(\"close\");" };
Run Code Online (Sandbox Code Playgroud)

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

从控制器动作中发出关闭JQuery对话框的信号是什么?

Dar*_*rov 5

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

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

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

return Json(new { success = true });
Run Code Online (Sandbox Code Playgroud)

然后:

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