MVC弹出窗口

11

我需要在MVC中创建弹出窗口(不是在浏览器中打开新标签页)。有人知道如何做吗?

我需要在MVC中创建弹出窗口(不是在浏览器中打开新标签页)。有人知道如何做吗?

我根据您的最新要求更新了我的答案(在对话框中打开URL地址)。希望能对您有所帮助 :) - Igor V Savchenko
2个回答

39

一个可能的解决方案是使用 jQuery UI对话框

编辑

思路是创建一个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();
 }

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

祝你好运!


我需要传递一个URL地址,该地址将在模态弹出窗口中打开,但我不确定如何使用jQuery实现。有什么想法吗? - Cipiripi
那段代码对我很有效(使用asp.net mvc 3 rtm)。您可以通过在AjaxActionLink参数中指定操作和控制器的名称来指定要在弹出窗口中显示的内容。框架会根据您的路由配置为您创建URL。 - uvita
7
一开始对我没起作用,直到我添加了jquery.unobtrusive-ajax.js(也许其它人已经知道了,但作为这方面的新手,我不知道...)。 - Gorgsenegger
@Gorgsenegger,请发送下载jquery.unobtrusive-ajax.js的链接。它对我不起作用:( 它在MVC 2.0中工作吗? - TechDo
@techdo:你可以通过谷歌搜索或从这里下载.nupkg文件 https://www.nuget.org/api/v2/package/jQuery.Ajax.Unobtrusive (将文件扩展名更改为.zip并打开它以提取脚本文件)。我不知道MVC 2,我在MVC 3中使用过它。 - Gorgsenegger
显示剩余4条评论

3
最明显的方法是使用其中一个js框架。个人更喜欢jQuery UI对话框控件。
请查看http://jqueryui.com/demos/dialog/,以获取有关它的详细信息。
您还可以查看ASP.NET MVC模态对话框/弹出窗口最佳实践(这是与您类似的问题)。
当然,如果您需要一些简单的弹出窗口,您始终可以使用alert('Im popup'); 根据您的最新要求进行更新
要在新窗口中打开某个URL,可以使用以下javascript:
function OpenDialog() {
window.open("some url", "DialogName", "height=200,width=200,modal=yes,alwaysRaised=yes");
}

但结果实际上取决于浏览器。大多数浏览器不是在新标签页中打开模态窗口,而是在新的浏览器实例中打开。
这个主题也可能对您有帮助:
JavaScript在新窗口中打开而不是标签页

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接