【问题标题】:How to open a MVC 4 view from javascript in a new popup window?如何在新的弹出窗口中从 javascript 打开 MVC 4 视图?
【发布时间】:2016-12-10 16:42:22
【问题描述】:

我有一个 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 但我得到了相同的结果。

所以如果有人能找到我做错了什么或者如何解决这个问题,请帮助我解决。

【问题讨论】:

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


    【解决方案1】:

    @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 点击绑定。

    【讨论】:

    • 嗨@Brian Ogden,我已根据您的信息进行了修改,但输出没有变化,这意味着没有弹出窗口在新标签窗口中打开。
    • @Ashish 我更新了我的答案,对您的 HTML 进行了额外更改
    • 对不起@Brian Ogden,在根据您的最新更新进行修改后没有发生任何事情,这意味着既不是在新的弹出窗口中打开,也不是在新的标签窗口中打开。
    • 这表明您的 window.showModalDialog 没有按预期工作,您需要使用 console.log 开始调试并看到您单击事件正在触发,window.showModalDialog 已弃用,您应该使用 window.open
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2013-12-02
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多