MVC-弹出窗口

时间:2011-01-26 10:22:06

标签: asp.net-mvc popup

我需要在mvc中创建弹出窗口(不是浏览器中的新选项卡)。有谁知道怎么做?

2 个答案:

答案 0 :(得分:37)

一种可能性是使用jquery ui dialog

修改

想法是有一个返回局部视图的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();
 }

在局部视图中放置您需要的任何内容,您还可以在操作中包含参数等。

祝你好运!

答案 1 :(得分:3)

最明显的方法是使用js框架之一。我个人喜欢jQuery UI对话框控件 有关详细信息,请查看http://jqueryui.com/demos/dialog/ 您也可以查看ASP.NET MVC modal dialog/popup best practice(这是与您类似的问题)

当然,如果你需要一些简单的弹出窗口,你总是可以使用alert('Im popup');

根据您的最新要求更新
要在新窗口中打开某个网址,您可以使用下一个javascript:

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

但结果真的取决于浏览器。他们中的大多数人不是在新标签中打开这个模态窗口,而是在新的浏览器实例中打开 本主题可能对您有所帮助:
JavaScript open in a new window, not tab