如何从控制器关闭ASP.NET MVC页面?

时间:2009-05-12 16:46:15

标签: asp.net-mvc model-view-controller

我有一个ASP.NET MVC应用程序,可以在新的浏览器窗口中打开“请求”视图。当用户提交表单时,我希望窗口关闭。在保存请求信息后,我的RequestController代码应该如何关闭窗口?我不确定控制器动作应该返回什么。

7 个答案:

答案 0 :(得分:28)

您可以返回包含以下javascript的视图(或者您可以返回JavaScript结果),但我更喜欢前者。

public ActionResult SubmitForm()
{
    return View("Close");
}

查看关闭:

<body>
    <script type="text/javascript">
        window.close();
    </script>
</body>

这是一种直接在你的控制器中进行操作的方法,但我建议反对它

public ActionResult SubmitForm()
{
    return JavaScript("window.close();");
}

答案 1 :(得分:3)

像这样:

[HttpPost]
public ActionResult MyController(Model model)
{
    //do stuff
    ViewBag.Processed = true;
    return View();
}

观点:

<%if(null!=ViewBag.Processed && (bool)ViewBag.Processed == true){%>
<script>
    window.close();
</script>
<%}%>

答案 2 :(得分:2)

听起来你可以返回一个几乎空的View模板,它只是在标题中运行了一些javascript,只是运行了“window.close()”。

答案 3 :(得分:0)

这让我关闭了窗户。

控制器:

 return PartialView("_LoginSuccessPartial");

查看:

<script>
   var loginwindow = $("#loginWindow").data("kendoWindow");
   loginwindow.close();
</script>

答案 4 :(得分:0)

这对我有用:

[HttpGet]
public ActionResult Done()
{
    return Content(@"<body>
                       <script type='text/javascript'>
                         window.close();
                       </script>
                     </body> ");
}

答案 5 :(得分:0)

您可以通过以下代码关闭:

return Content(@"<script>window.close();</script>", "text/html");

答案 6 :(得分:-1)

使用此功能可以关闭窗口,如下所示:

return Content("&lt;script language='javascript'>window.close();&lt;/script>");