如何防止超链接链接

时间:2008-09-08 09:07:39

标签: asp.net css

是否可以防止asp.net超链接控件链接,即使其显示为标签,而不必实际用标签替换控件?也许使用CSS或设置属性?

我知道将其标记为已禁用可以正常工作,但之后会以不同方式显示(灰显)。

为了澄清我的观点,我在页面顶部有一个用户名列表,这些用户名是使用用户控件动态构建的。大多数情况下,这些名称可链接到电子邮件页面。但是,如果用户已被禁用,则名称将以灰色显示,但目前仍指向电子邮件页面。我希望这些禁用的用户不要链接。

我知道我真的应该用标签取代它们,但这似乎并不像使用CSS说明(如果可能的话)删除链接能力那么优雅。它们已经以不同的颜色显示,因此很明显它们是禁用的用户。我只需要关闭链接。

11 个答案:

答案 0 :(得分:6)

这听起来像是JQuery的工作。只需为要删除URL的所有HyperLink控件指定一个特定的类名,然后将以下JQuery代码段应用到页面底部:

$(document).ready(function() {
    $('a.NoLink').removeAttr('href')
});

所有名称为“NoLink”的HyperLink控件都会自动删除所有网址,链接似乎只是文字。

单行JQuery可以解决您的问题。

答案 1 :(得分:4)

我很好奇你用它完成了什么。为什么要使用链接?

仅用于格式化吗?在这种情况下,只需使用< span>在HTML中并使用样式表使格式与链接匹配。

或者您使用该链接并附加onClick-Event,其中“返回false”;这将使浏览器不进行导航 - 如果启用了JS。

但是:对您的用户来说,这不是很令人困惑吗?为什么创建看起来像链接但什么也不做的东西?

您能提供更多详情吗?我有这种感觉,你正试图解决一个更大的问题,它有一个更好的解决方案,而不是削弱一个链接: - )

答案 2 :(得分:3)

无论您采取何种设置,超链接控件都将呈现为“a”“/ a”标记。您可以自定义CSS类,使链接看起来像普通标签。

或者,您可以构建一个继承自System.Web.UI.WebControls.HyperLink的自定义控件,并覆盖Render方法

protected override void Render(HtmlTextWriter writer)
        {
            if (Enabled)
                base.Render(writer);
            else
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Span);
                writer.Write(Text);
                writer.RenderEndTag(HtmlTextWriterTag.Span);
            }
        }

     }

可能有点矫枉过正,但它可以满足您的要求。

另外我发现在我的项目文件中有一个基础asp:CustomHyperlink asp:CustomButton类是有用的。使整个项目中的自定义行为更容易定义。

答案 3 :(得分:2)

如果您只想修改链接的外观以免看起来像链接,可以将“a”标记的CSS设置为没有下划线:

a: link, visited, hover, active {
    text-decoration: none;
}

虽然我建议不要在这里加入“悬停”,因为没有其他方法可以知道这是一个链接。

无论如何,我同意@pilif在这里,这看起来像是一个等待发生的可用性灾难。

答案 4 :(得分:2)

这应该有效:

onclick="return false;"  

如果没有,你也可以将href改为“#”。使其显示为文本的其余部分是css,例如显示箭头而不是手是:

a.dummy {  
    cursor:default;  
}  

答案 5 :(得分:2)

如果您要停止激活链接,通常的方法是链接到“javascript:void(0);”,即:

< a href =“javascript:void(0);”> foo< / a>

答案 6 :(得分:2)

感谢所有的输入,看起来简短的回答是'不,你不能(好不好),所以我必须以艰难的方式去做并添加条件代码。

答案 7 :(得分:0)

如果您在asp.net中使用数据绑定处理数据绑定事件,并且如果禁用该用户,则不要设置NavigateUrl。

答案 8 :(得分:0)

您是否尝试过设置NavigateUrl属性?如果未设置,则可以将其渲染为跨度。

答案 9 :(得分:0)

.fusion-link-wrapper {pointer-events:none; }

答案 10 :(得分:0)

另一种解决方案是在您的超链接上应用此类。

.avoid-clicks {
  pointer-events: none;
}
相关问题