如何在新的弹出窗口中从javascript打开MVC 4视图?

时间:2016-12-10 16:42:23

标签: javascript jquery asp.net-mvc asp.net-mvc-4

我有一个MVC视图页面,其中有一个HTML ActionLink,点击该动作链接,我想打开一个新的弹出窗口而不关闭前一个。在这个新的弹出窗口中,我想显示一个MVC视图,但我无法做到这一点。

现在我使用以下代码来执行此操作:

<script type="text/javascript">
$(function () {
    $('a.edit').click(function () {
        var url = $(this).attr('href');
        window.showModalDialog(url, "#1", "dialogHeight:600px;dialogHeight:400px;dialogWidth:700px;dialogTop:300px;dialogLeft:400px;edge:Raised;center:Yes;help:No;Resiable:No;Status:No;");
    });
    return false;
});

@Html.ActionLink("Answer", "getanswer", new {controller="Question"}, new {target="_blank",@class="edit"})

但问题是,它不是作为弹出窗口打开,而是在新的标签窗口中打开。所以我无法找到我做错的地方。

我还尝试了 window.open 而不是 window.showModalDialog ,但我得到的结果相同。

所以,如果有人能找到我做错的地方或如何解决这个问题,请帮我解决。

1 个答案:

答案 0 :(得分:0)

@ Html.ActionLink在DOM中创建HTML:

 <a href="question/getanswer" target="_blank" class="edit">Answer</a>

当然,在新标签中点击并打开链接。

您可能尝试通过返回false来阻止此事件发生,但您没有在正确的位置返回false,当前您从document.ready事件完成返回false,您应该删除return false; .. 。尝试:

$('a.edit').click(function () {
        var url = $(this).attr('href');
        window.showModalDialog(url, "#1", "dialogHeight:600px;dialogHeight:400px;dialogWidth:700px;dialogTop:300px;dialogLeft:400px;edge:Raised;center:Yes;help:No;Resiable:No;Status:No;");
        return false;
    });

或者这更好:

$('a.edit').click(function (e) {
        var url = $(this).attr('href');
        window.showModalDialog(url, "#1", "dialogHeight:600px;dialogHeight:400px;dialogWidth:700px;dialogTop:300px;dialogLeft:400px;edge:Raised;center:Yes;help:No;Resiable:No;Status:No;");
        e.stopPropagation;
    });

如果以上内容不足以解决问题,请暂时停止使用@Html.ActionLink并替换为:

<div href="@Url.Action("getanswer", "Question")" class="edit" style="cursor: pointer">Answer</div>

然后将jQuery选择器从a.edit更改为.edit

现在,当然,您将停止在新选项卡中打开链接,您可以更正确地聚焦和调试jQuery单击绑定。