Как предотвратить гиперссылку от ссылки - PullRequest
3 голосов
/ 08 сентября 2008

Можно ли предотвратить связывание элемента управления asp.net Hyperlink, т. Е. Чтобы он отображался как метка, без необходимости замены элемента управления меткой? Может быть, с помощью CSS или установки атрибута?

Я знаю, что пометка его как отключенного работает, но затем он отображается по-другому (выделен серым цветом).

Чтобы прояснить мою точку зрения, у меня есть список имен пользователей в верхней части моей страницы, которые создаются динамически с использованием пользовательского элемента управления. В большинстве случаев эти имена можно связать со страницей электронной почты. Однако, если пользователь был отключен, имя отображается серым цветом, но в настоящее время все еще ссылается на страницу электронной почты. Я хочу, чтобы эти отключенные пользователи не связывались.

Я знаю, что на самом деле мне следует заменить их на метку, но это не так элегантно, как просто удалить использование возможностей связывания с помощью CSS (если это возможно). Они уже отображаются другим цветом, так что очевидно, что они являются отключенными пользователями. Мне просто нужно отключить ссылку.

Ответы [ 11 ]

6 голосов
/ 08 сентября 2008

Это звучит как работа для JQuery. Просто укажите конкретное имя класса для всех элементов управления HyperLink, для которых вы хотите удалить URL-адреса, а затем примените следующий фрагмент JQuery в нижней части вашей страницы:

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

У всех элементов управления HyperLink с именем класса «NoLink» автоматически удаляются все их URL-адреса, и ссылка будет представлять собой не что иное, как текст.

Одна строчка JQuery может решить вашу проблему.

4 голосов
/ 08 сентября 2008

Мне интересно, что вы делаете с этим. Зачем вообще использовать ссылку?

Это только для форматирования? В этом случае просто используйте в HTML и используйте таблицы стилей, чтобы формат соответствовал ссылкам.

Или вы используете ссылку и прикрепляете событие onClick, где вы «возвращаете false»; что заставит браузер не выполнять навигацию - если JS включен.

Но: разве это не ужасно запутывает ваших пользователей? Зачем создавать что-то похожее на ссылку, но ничего не делает?

Можете ли вы предоставить более подробную информацию? У меня такое чувство, что вы пытаетесь решить более серьезную проблему, решение которой гораздо лучше, чем калечить ссылку: -)

3 голосов
/ 08 сентября 2008

Элемент управления Hyperlink будет отображаться как тег "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 голосов
/ 08 сентября 2008

Спасибо за все введенные данные, похоже, что короткий ответ: «Нет, вы не можете (ну, конечно, не очень хорошо)», поэтому мне придется сделать это сложным образом и добавить условный код.

2 голосов
/ 08 сентября 2008

Если вы хотите остановить активацию ссылки, обычным способом является ссылка на «javascript: void (0);», т.е.:

Foo

2 голосов
/ 08 сентября 2008

Это должно работать:

onclick="return false;"  

если нет, вы можете также изменить href на "#". Сделать его похожим на остальную часть текста - css, например отображение стрелки вместо руки:

a.dummy {  
    cursor:default;  
}  
2 голосов
/ 08 сентября 2008

Если вы просто хотите изменить внешний вид ссылки, чтобы она не выглядела как ссылка, вы можете установить CSS для ваших тегов "a", чтобы они не подчеркивались:

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

Хотя я бы не советовал включать здесь "hover", потому что другого способа узнать, что это ссылка, не будет.

В любом случае, я согласен с @pilif здесь, это похоже на катастрофу для удобства использования.

0 голосов
/ 21 декабря 2017

Другое решение - применить этот класс к вашей гиперссылке.

.avoid-clicks {
  pointer-events: none;
}
0 голосов
/ 18 декабря 2017

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

0 голосов
/ 09 сентября 2008

Вы пытались просто , а не установить свойство NavigateUrl? Если это не установлено, он может просто отображаться как span.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...