ASP.NET MVC:如何关闭浏览器窗口而不是返回视图?
问题描述:
我有一个实例,而不是我自己的选择,但我在浏览器中有一个辅助弹出窗口。 将表单提交回服务器端MVC方法后,在完成此方法后,我希望它关闭调用它的浏览器窗口。ASP.NET MVC:如何关闭浏览器窗口而不是返回视图?
有没有办法做到这一点,而不是在“onReady”中用JavaScript返回一个视图,告诉它关闭?
答
不,没有办法从服务器实现这一点,而不使用JavaScript(或返回一个视图,将执行此JavaScript)。
答
将这个在您的视图:
@if (ViewBag.ShouldClose) {
<script type="text/javascript">
window.close();
</script>
}
然后,如果你设置ShouldClose属性,它会运行该脚本,并应关闭该窗口。
// in your controller
ViewBag.ShouldClose = true;
注意:我在编辑器中这样做了,所以您可能需要调整视图语法以使其解析正确。
答
我有同样的问题,@迈克尔肯尼迪的答案正是我所需要的!由于我使用MVC 2,我不得不改变语法。我会把它放在这里作为其他人的参考。
在视图:
<% if ((bool)ViewData["ShouldClose"]) { %>
<script type="text/javascript">
window.close();
</script>
<% } %>
在控制器:
ViewData["ShouldClose"] = true;
不要忘记设置的ViewData在每次调用视图,否则你会得到用于浇铸的NullReference布尔。
唯一的问题是,我没有运行最新的MVC,所以我不能使用@语法。尽管如此,我只是让它与古老的一起工作。 ;) 谢谢。 – 2011-05-27 15:44:57
好的废话...看起来像viewbag并没有加入,直到MVC 3以及。无论哪种方式,我知道如何在客户端处理它。我只是好奇,如果我可以将它扼杀在服务器端的萌芽。 thx虽然。 – 2011-05-27 15:46:46
当然。 ViewData [“ShouldClose”]双方应该工作,我认为。 – 2011-05-27 15:53:51