web-dev-qa-db-ja.com

コントローラからASP.NETMVCページを閉じるにはどうすればよいですか?

新しいブラウザウィンドウで「リクエスト」ビューを開くASP.NETMVCアプリがあります。ユーザーがフォームを送信したら、ウィンドウを閉じてください。リクエスト情報を保存した後にウィンドウを閉じるには、RequestControllerコードはどのようになりますか?コントローラのアクションが何を返す必要があるのか​​わかりません。

21
gfrizzle

次のjavascriptを含むビューを返すこともできます(またはJavaScriptの結果を返すこともできます)が、私は前者を好みます。

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

閉じるための表示:

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

これはコントローラーで直接行う方法ですが、お勧めしません

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

そのようなように:

[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>
<%}%>
3

「window.close()」を実行したばかりのヘッダーにjavascriptが含まれている、ほぼ空のViewテンプレートを返すことができるようです。

2
womp

これは私のために働いた:

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

これは私がウィンドウを閉じるのに役立ちました。

コントローラ:

 return PartialView("_LoginSuccessPartial");

見る:

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