如何防止超链接链接

问题描述 投票:3回答:11

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

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

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

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

asp.net css
11个回答
6
投票

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

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

所有类名为“NoLink”的HyperLink控件都会自动删除所有网址,链接看起来只不过是文本。

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


0
投票

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


0
投票

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

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

4
投票

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

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

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

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

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


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


2
投票

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

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

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

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


2
投票

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

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


2
投票

这应该工作:

onclick="return false;"  

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

a.dummy {  
    cursor:default;  
}  

2
投票

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.