我遇到了这个有趣的情况:
<ul>
@foreach (var item in Model)
{
<li>
<a href="@Url.Action("Details", "Product", new { id = item.Id })" >@item.Name</a>
</li>
}
</ul>
当我点击链接时,没有任何反应,产品详细信息页面无法打开。但是我 “在新标签中打开链接” ,然后它会打开。可能是什么原因?
答案 0 :(得分:33)
您有一些javascript代码阻止执行锚标记的默认操作。您可以检查FireBug或Chrome DevTools中的Network
标签,看看点击链接时是否有一些AJAX请求。您可以尝试排除javascript文件,直到找到正在执行此操作的文件。
答案 1 :(得分:5)
也许您使用JavaScript阻止了标记的重定向事件。
例如:
$(document).on('click', 'a.thatTag', function (e) {
// ...
e.preventDefault();
});
.preventDefault()
阻止重定向。
答案 2 :(得分:2)
Darren正确地给出了一些javascript代码,它正在发送一个AJAX请求(post或get),阻止链接按预期运行。
但是,如果您使用了外部资源,则可能很难纠正min
文件中的错误。
我建议使用jquery onclick事件内联来规避AJAX调用
<a href="http://foo.bar/" onclick="window.open('https://www.foo.bar/culrsteam')">Foo</a>
&#13;
您还可以使用与window.open('https://www.foo.bar/culrsteam', '_blank')
target='_blank'
答案 3 :(得分:1)
试试这段代码......
<a href="http://google.com/" onclick="location.replace('http://google.com/'),'_top'">Google</a>
答案 4 :(得分:1)
如果地址在href属性中没有传输协议,则可能发生这种情况。一个示例是将localhost链接为<a href="localhost"></div>
而不是<a href="http://localhost"></div>
。如果这样做,您将看到Google Chrome将取消已取消状态,并且在Safari中会出现一个对话框,询问应该打开哪个应用程序链接,因为传输协议未知。在PHP中设置$_SERVER['HTTP_HOST']
链接时遇到此问题。
关键是,请务必将转移协议保留在链接前面http://
,https://
,ftp://
或其他任何内容。
答案 5 :(得分:0)
我知道这是一个老问题,但刚刚遇到类似的问题,听起来问题可能是您的请求被浏览器阻止了。如果您当前处于尝试链接到不安全(http)资源的安全(https)环境中,则会发生这种情况。
目前还不清楚您的href是什么,但如果您当前的环境是安全的,请确保href是https(或//)。
答案 6 :(得分:0)
我在父元素上设置了e.preventDefault()
。
答案 7 :(得分:0)
在使用JS设置链接的href
属性后,我在ReactJS中遇到了这个问题。我使用useState
钩子解决了链接的问题。
答案 8 :(得分:0)
我有 data-bs-dismiss="modal"
关闭我的模式但阻止重定向