我有一个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 ,但我得到的结果相同。
所以,如果有人能找到我做错的地方或如何解决这个问题,请帮我解决。
答案 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单击绑定。