2011-01-26 56 views
12

我需要在mvc中創建彈出窗口(不是瀏覽器中的新選項卡)。有誰知道如何做到這一點?MVC-pop up windows

+0

我已經按照你的最新要求(在對話框中打開URL地址)來更新我的答案。我希望它可以幫助你:) – 2011-01-26 12:54:10

回答

34

一種可能性是使用jquery ui dialog

EDIT

的想法是有一個返回的局部視圖一個Ajax動作。該操作的結果(html)放置在彈出窗口的容器內,並在ajax調用的成功處理程序中打開彈出窗口。下面是一些示例代碼:

@Ajax.ActionLink("Open popup", "SomeAction", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "result", InsertionMode = InsertionMode.Replace, OnSuccess="openPopup" })<br /> 

<div id="result" style="display:none;"></div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#result").dialog({ 
     autoOpen: false, 
     title: 'Title', 
     width: 500, 
     height: 'auto', 
     modal: true 
    }); 
}); 
function openPopup() { 
    $("#result").dialog("open"); 
} 
</script> 

然後,你必須在返回的局部視圖

[HttpGet] 
public PartialViewResult SomeAction() 
{ 
     return PartialView(); 
} 

地方無論你在局部視圖所需要的控制器添加動作,你也可以包括在參數行動等

祝你好運!

+0

我需要傳遞將在模式彈出的URL地址,我不知道如何做到這一點與jquery ..任何想法? – Cipiripi 2011-01-26 12:18:43

3

最明顯的方法是使用js框架之一。我個人喜歡jQuery UI對話框控件。
有關詳細信息,請檢查http://jqueryui.com/demos/dialog/。你
還可以檢查ASP.NET MVC modal dialog/popup best practice(類似於你它的問題)

當然,如果你需要一些簡單的彈出你總是可以根據最新的要求使用alert('Im popup');

更新
要在新打開一些網址你可以使用下一個javascript的窗口javascript:

function OpenDialog() { 
window.open("some url", "DialogName", "height=200,width=200,modal=yes,alwaysRaised=yes"); 
} 

但是結果真的取決於瀏覽器。他們中的大多數人不是在新標籤中打開此模式窗口,而是在新的瀏覽器實例中打開。
本主題可以幫助你藏漢:
JavaScript open in a new window, not tab