2009-05-12 120 views
18

新しいブラウザウィンドウで「リクエスト」ビューを開くASP.NET MVCアプリケーションがあります。ユーザーがフォームを送信すると、ウィンドウを閉じたいと思います。要求情報を保存した後、ウィンドウを閉じるために私のRequestControllerコードはどのように表示されるべきですか?コントローラーのアクションが何を返すべきかはわかりません。コントローラからASP.NET MVCページをどのように閉じますか?

答えて

25

次のjavascript(またはJavaScript結果を返すことができる)を持つビューを返すことができますが、私は前者を優先します。閉じるため

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

ビュー:ここ

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

があなたのコントローラで直接それを行うための方法ですが、私はあなたがほとんど空を返すことができるようですねそれに対して

public ActionResult SubmitForm() 
{ 
    return JavaScript("window.close();"); 
} 
+1

好奇心:なぜあなたは、コントローラ専用の溶液に対して助言するでしょうか? – gfrizzle

+5

ウィンドウを閉じてUIを操作しています。コントローラーの責任のようには思われません。 – womp

+3

JavaScriptを返そうとしたところ、動作しません。 「window.close();」と表示されます。画面上。私はAjaxを使ってこのアクションを呼び出すべきだと他の場所で読んでいましたが、私はそれをテストすることができませんでした。ちょうど頭を上げてください。 – Aries51

2

に助言ちょうど "window.close()"を実行したヘッダーにいくつかのjavascriptがあるテンプレートを表示します。

return Content("&lt;script language='javascript'>window.close();&lt;/script>"); 
3

コントローラー:

return PartialView("_LoginSuccessPartial"); 

ビュー:

<script> 
    var loginwindow = $("#loginWindow").data("kendoWindow"); 
    loginwindow.close(); 
</script> 
-1

:ビュー

[HttpPost] 
public ActionResult MyController(Model model) 
{ 
    //do stuff 
    ViewBag.Processed = true; 
    return View(); 
} 

:などのように

+0

私にとって、これはちょうど文字列としてスクリプトを返し、それを表示し、実行しませんでした。 –

+4

返品内容( ""); –

0

これは、ウィンドウを閉じるには、私の仕事:あなたは、このようにウィンドウを閉じることができ、これを使用して

<%if(null!=ViewBag.Processed && (bool)ViewBag.Processed == true){%> 
<script> 
    window.close(); 
</script> 
<%}%> 
関連する問題