ASP.NET MVC: как закрыть окно браузера, а не возвращать представление? - PullRequest
3 голосов
/ 27 мая 2011

У меня есть экземпляр, где не по собственному выбору, но у меня есть дополнительное всплывающее окно в браузере. После отправки формы обратно в метод MVC на стороне сервера, после того, как этот метод будет завершен, я бы хотел закрыть окно браузера, в котором он был вызван.

Есть ли способ сделать это, кроме как вернуть представление с javascript в "onReady", которое говорит ему закрыться?

Ответы [ 3 ]

7 голосов
/ 27 мая 2011

Нет, невозможно добиться этого с сервера без использования JavaScript (или возврата представления, которое будет выполнять этот JavaScript).

5 голосов
/ 27 мая 2011

Поставьте это на ваш взгляд:

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

Затем, если вы установите свойство ShouldClose, он запустит этот скрипт и закроет окно.

// in your controller
ViewBag.ShouldClose = true;

Примечание: я сделал это из редактора, так что вам, возможно, придется настроить синтаксис представления, чтобы правильно его проанализировать.

2 голосов
/ 20 апреля 2012

У меня был тот же вопрос, и ответ @Michael Kennedy был именно тем, что мне было нужно! Поскольку я использую MVC 2, мне пришлось изменить синтаксис. Я помещу это здесь как ссылку для других.

По виду:

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

В контроллере:

ViewData["ShouldClose"] = true;

Не забудьте установить ViewData при каждом вызове представления, иначе вы получите NullReference для приведения к bool.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...