C# ASP.NET MVC:如何关闭浏览器窗口而不是返回视图?

C# ASP.NET MVC:如何关闭浏览器窗口而不是返回视图?,c#,asp.net-mvc,browser,C#,Asp.net Mvc,Browser,我有一个实例,不是我自己选择的,但我在浏览器中有一个辅助弹出窗口。 表单提交回服务器端MVC方法后,在该方法完成后,我希望它关闭调用它的浏览器窗口 除了在“onReady”中返回一个带有javascript的视图并告诉它关闭外,还有其他方法可以做到这一点吗?没有,没有一种方法可以在不使用javascript的情况下从服务器上实现这一点(或返回一个将执行此javascript的视图)。将此信息放入您的视图中: @if (ViewBag.ShouldClose) { <script t

我有一个实例,不是我自己选择的,但我在浏览器中有一个辅助弹出窗口。 表单提交回服务器端MVC方法后,在该方法完成后,我希望它关闭调用它的浏览器窗口


除了在“onReady”中返回一个带有javascript的视图并告诉它关闭外,还有其他方法可以做到这一点吗?

没有,没有一种方法可以在不使用javascript的情况下从服务器上实现这一点(或返回一个将执行此javascript的视图)。

将此信息放入您的视图中:

@if (ViewBag.ShouldClose) {
    <script type="text/javascript">
        window.close();
    </script>  
}

注意:我是在编辑器中这样做的,因此您可能需要调整视图语法以使其正确解析。

我也有同样的问题,@Michael Kennedy的答案正是我所需要的!因为我使用的是MVC2,所以我不得不修改语法。我将把它放在这里作为其他人的参考

他认为:

<% if ((bool)ViewData["ShouldClose"]) { %>
<script type="text/javascript">
   window.close();
</script>
<% } %>

不要忘记在每次调用视图时都设置ViewData,否则您将获得一个对bool的强制转换的NullReference

唯一的问题是,我没有运行最新的MVC,所以我不能使用@语法。不过我会让它和古董一起使用废话…看起来viewbag也是在MVC3之前才添加的。不管怎样,我知道如何在客户端处理它。我只是好奇,是否可以在服务器端将其扼杀在萌芽状态。谢谢,当然。我认为两边的ViewData[“ShouldClose”]都应该可以。您可能必须在视图端执行(bool)ViewData[“ShouldClose”]。当然,我个人的偏好是使用模型类和强类型视图。在这种情况下,只需放置一个公共bool ShouldClose{get;set;}并在服务器/视图端读/写它。
<% if ((bool)ViewData["ShouldClose"]) { %>
<script type="text/javascript">
   window.close();
</script>
<% } %>
ViewData["ShouldClose"] = true;