2011-05-27 68 views
3

我有一個實例,而不是我自己的選擇,但我在瀏覽器中有一個輔助彈出窗口。 將表單提交回服務器端MVC方法後,在完成此方法後,我希望它關閉調用它的瀏覽器窗口。ASP.NET MVC:如何關閉瀏覽器窗口而不是返回視圖?

有沒有辦法做到這一點,而不是在「onReady」中用JavaScript返回一個視圖,告訴它關閉?

回答

7

不,沒有辦法從服務器實現這一點,而不使用JavaScript(或返回一個視圖,將執行此JavaScript)。

5

將這個在您的視圖:

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

然後,如果你設置ShouldClose屬性,它會運行該腳本,並應關閉該窗口。

// in your controller 
ViewBag.ShouldClose = true; 

注意:我在編輯器中這樣做了,所以您可能需要調整視圖語法以使其解析正確。

+0

唯一的問題是,我沒有運行最新的MVC,所以我不能使用@語法。儘管如此,我只是讓它與古老的<%%>一起工作。 ;) 謝謝。 – 2011-05-27 15:44:57

+0

好的廢話...看起來像viewbag並沒有加入,直到MVC 3以及。無論哪種方式,我知道如何在客戶端處理它。我只是好奇,如果我可以將它扼殺在服務器端的萌芽。 thx雖然。 – 2011-05-27 15:46:46

+0

當然。 ViewData [「ShouldClose」]雙方應該工作,我認爲。 – 2011-05-27 15:53:51

2

我有同樣的問題,@邁克爾肯尼迪的答案正是我所需要的!由於我使用MVC 2,我不得不改變語法。我會把它放在這裏作爲其他人的參考。

在視圖:

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

在控制器:

ViewData["ShouldClose"] = true; 

不要忘記設置的ViewData在每次調用視圖,否則你會得到用於澆鑄的NullReference布爾。