У меня есть приложение ASP.NET MVC, которое открывает представление «Запрос» в новом окне браузера. Когда пользователь отправляет форму, я хотел бы закрыть окно. Каким должен быть мой код RequestController закрыть окно после сохранения информации о запросе? Я не уверен, что действие контроллера должно быть возвращено.Как закрыть страницу ASP.NET MVC с контроллера?
ответ
Вы можете вернуть представление, которое имеет следующий javascript (или вы можете вернуть результат JavaScript), но я предпочитаю первый.
public ActionResult SubmitForm()
{
return View("Close");
}
Вид на Close:
<body>
<script type="text/javascript">
window.close();
</script>
</body>
Вот способ сделать это непосредственно в контроллер, но я советую против
public ActionResult SubmitForm()
{
return JavaScript("window.close();");
}
Это звучит, как вы могли бы вернуться почти пуст Просмотрите шаблон, который просто имел некоторый javascript в заголовке, который только что запустил «window.close()».
Как например:
[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>
<%}%>
С помощью этого вы можете закрыть окно, как это:
return Content("<script language='javascript'>window.close();</script>");
Для меня это просто вернуло скрипт как строку и отобразило его, а не запустило. –
return Content (""); –
Это работает для меня, чтобы закрыть окно.
Контроллер:
return PartialView("_LoginSuccessPartial");
Вид:
<script>
var loginwindow = $("#loginWindow").data("kendoWindow");
loginwindow.close();
</script>
Любопытно: почему бы вы посоветовали против контроллера только решение? – gfrizzle
Вы управляете пользовательским интерфейсом, закрывая окно. Не похоже на ответственность диспетчера. – womp
Я просто попытался вернуть JavaScript, и он не работает. Он отображает только «window.close();» на экране. Я читал где-то еще, что вы должны вызвать это действие с помощью Ajax, но я не смог его протестировать. Просто хватая головы. – Aries51