我需要在mvc中创建弹出窗口(不是浏览器中的新选项卡)。有谁知道怎么做?
答案 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