Asp.net 如何防止超链接链接

Asp.net 如何防止超链接链接,asp.net,css,Asp.net,Css,是否可以防止asp.net超链接控件链接,即使其显示为标签,而不必实际使用标签替换控件?可能使用CSS或设置属性 我知道将其标记为禁用会起作用,但随后它会以不同的方式显示(变灰) 为了阐明我的观点,我在页面顶部有一个用户名列表,这些用户名是使用用户控件动态生成的。大多数情况下,这些名称都可以链接到电子邮件页面。但是,如果用户已被禁用,则名称将显示为灰色,但当前仍链接到电子邮件页面。我希望这些禁用的用户不要链接 我知道我真的应该用一个标签来代替它们,但这看起来并不像使用CSS(如果可能的话)删除链

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

我知道将其标记为禁用会起作用,但随后它会以不同的方式显示(变灰)

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


我知道我真的应该用一个标签来代替它们,但这看起来并不像使用CSS(如果可能的话)删除链接功能那样优雅。它们已经以不同的颜色显示,因此很明显,它们是残疾用户。我只需要关闭链接。

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

a: link, visited, hover, active {
    text-decoration: none;
}
尽管我建议不要在这里包含“hover”,因为没有其他方法可以知道它是一个链接

无论如何,我同意@pilif的观点,这看起来像是一场即将发生的可用性灾难。

这应该可以:

onclick="return false;"  
如果没有,您也可以将href更改为“#”。将其显示为文本的其余部分是css,例如,显示箭头而不是手是:

a.dummy {  
    cursor:default;  
}  

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

只是为了格式化吗?在这种情况下,只需在HTML中使用a,并使用样式表使格式与链接匹配即可

或者使用链接并附加一个onClick事件,其中“return false;”将使浏览器不进行导航-如果启用了JS

但是:这对你的用户来说不是很混乱吗?为什么要创建看起来像链接但什么都不做的东西


你能提供更多细节吗?我有一种感觉,你正在试图解决一个更大的问题,这个问题有一个比破坏链接更好的解决方法:-)

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


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

或者,您可以构建从System.Web.UI.WebControl.HyperLink继承的自定义控件,并覆盖渲染方法

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类是很有用的。使在整个项目中定义自定义行为变得更容易。

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

$(document).ready(function() {
    $('a.NoLink').removeAttr('href')
});
所有类名为“NoLink”的超链接控件将自动删除其所有URL,并且链接看起来只不过是文本


一行JQuery就可以解决您的问题。

谢谢您的输入,简短的回答似乎是“不,您做不到(无论如何也不是很好)”,因此,我必须以艰难的方式添加条件代码。

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

您是否尝试过只设置NavigateUrl属性?如果未设置此选项,则它可能只是呈现为span.

.fusion链接包装器{pointer events:none;}

另一个解决方案是在超链接上应用此类

.avoid-clicks {
  pointer-events: none;
}

所谓阻止,你的意思是“阻止它以链接的形式出现”还是完全阻止它以链接的形式工作?两者都有,但它看起来已经不像链接了,这是用CSS完成的。我只需要使其不可点击。生成此链接的代码已经相当复杂,如果可以避免的话,我不愿意通过在其周围添加条件代码来增加复杂性,将其作为标签而不是超链接输出。我不认为将javascript放在href中是“正确的方式”,虽然它工作。我不希望它显示为一个链接或工作作为一个链接。我知道在这种特殊情况下,它应该是一个标签。然而,所涉及的代码已经相当复杂,如果说CSS可以完成这项工作,我不愿意用“if”语句增加复杂性。即使未设置NavigateUrl,它也会呈现为一个标记。