我在HTML中的javascript:void(0)
标记上看到了<a>
方法,用于隐藏超链接对象的目标网址。现在我想在<asp:HyperLink>
上做同样的事情,我该怎么办?
我在做ASP.NET,这是标记:
<asp:HyperLink runat="server" ID="hl1">Blah blah blah</asp:HyperLink>
在代码隐藏中,我使用NavigateUrl
方法为hl1
指定了HttpUtility.UrlDecode
。
我在coebehind中尝试了hl1.Attributes[
href ]="javascript:void(0)";
,但是没有用。无法再打开NavigateUrl
。
答案 0 :(得分:1)
您需要在隐藏字段中存储要导航到的网址,并在标记中设置NavigateUrl = "#"
,如下所示。这样,当用户的光标悬停在链接上时,实际的导航URL将永远不会显示在浏览器的底部。
然后在客户端附加一个click
事件处理程序,用于通过将超链接的onclick
属性设置为名为navigate
的JavaScript函数来执行的超链接。实际重定向到新页面是由navigate
函数完成的。
在这种情况下,您只会看到当前页面的后缀为#
的网址。例如,如果您当前的网页网址为http://localhost/mysite/view.aspx
,那么它会在浏览器底部显示http://localhost/mysite/view.aspx#
。
需要加价
<asp:HyperLink runat="server" ID="hl" NavigateUrl="#"
onclick="navigate();">Some Text</asp:HyperLink>
<asp:HiddenField ID="hdnURL" runat="server" Value="http://www.microsoft.com" />
需要JavaScript
<script type="text/javascript">
function navigate() {
window.location.href = document.getElementById("<%=hdnURL.ClientID%>").value;
}
</script>
如果必须为代码隐藏中的超链接设置NavigateURL,则可以使用的另一种方法如下所示。在此方法中,您需要在内容呈现之前删除NavigateURL并将其存储在名为linkUrl
的全局变量中。在内容呈现之前触发的事件是pageLoad
,我们将使用该事件来执行此操作。
JavaScript中的全局变量必须始终在所有方法之外声明。
然后在点击超链接时,我们可以从linkUrl
的全局变量中获取值,并将用户重定向到该位置。
注意:保持超链接的标记与第一种方法相同。但是从该标记中删除隐藏字段。
<script type="text/javascript">
function navigate(event) {
window.location.href = linkURL;
}
var linkUrl = null;
function pageLoad() {
var link = document.getElementById("<%=hl.ClientID%>");
linkURL = link.getAttribute("href");
link.setAttribute("href","#");
}
</script>