2011-01-26 35 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