5

コントロールを実際にラベルに置き換えることなく、asp.netハイパーリンクコントロールがリンクするのを防ぐことはできますか?つまり、ラベルとして表示されるようにすることはできますか? 多分CSSを使用するか、属性を設定しますか?

無効にすると機能することはわかっていますが、表示が異なります(グレー表示されます)。

私の主張を明確にするために、ページの上部に、ユーザー コントロールを使用して動的に作成されたユーザー名のリストがあります。ほとんどの場合、これらの名前は電子メール ページにリンクできます。ただし、ユーザーが無効になっている場合、名前は灰色で表示されますが、現在はまだ電子メール ページにリンクされています。これらの無効なユーザーがリンクしないようにします。

私は実際にそれらをラベルに置き換える必要があることを知っていますが、これは CSS を使用してリンク機能を削除するほどエレガントではないようです (可能であれば)。それらはすでに別の色で表示されているため、無効なユーザーであることは明らかです。リンクを切るしかない。

4

12 に答える 12

6

これは JQuery の仕事のように思えます。URL を削除するすべての HyperLink コントロールに特定のクラス名を付けてから、次の JQuery スニペットをページの下部に適用します。

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

クラス名が「NoLink」の HyperLink コントロールはすべて、自動的にすべての URL が削除され、リンクは単なるテキストのように見えます。

JQuery の 1 行で問題を解決できます。

于 2008-09-08T09:40:32.393 に答える
4

あなたがそれで何を達成するのか、私は興味があります。なぜリンクを使用するのですか?

整形のためだけですか?その場合は、HTML で <span> を使用し、スタイルシートを使用してフォーマットをリンクに一致させます。

または、リンクを使用して、「false を返す」場所に onClick-Event を添付します。JSが有効になっている場合、ブラウザはナビゲーションを行わなくなります。

しかし: それはユーザーをひどく混乱させませんか? リンクのように見えても何もしないものを作成するのはなぜですか?

詳細を教えていただけますか?リンクを無効にするよりもはるかに優れた解決策がある、より大きな問題を解決しようとしているような気がします :-)

于 2008-09-08T09:25:26.750 に答える
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 クラスがあると便利です。プロジェクト全体でカスタム動作を簡単に定義できます。

于 2008-09-08T09:39:59.540 に答える
2

リンクのように見えないようにリンクの外観を変更したいだけの場合は、「a」タグの CSS に下線がないように設定できます。

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

ただし、それがリンクであることを知る方法は他にないため、ここに「ホバー」を含めることはお勧めしません。

とにかく、ここで @pilif に同意します。これは、ユーザビリティの惨事が起こるのを待っているように見えます。

于 2008-09-08T09:20:37.603 に答える
2

これはうまくいくはずです:

onclick="return false;"  

そうでない場合は、href を「#」に変更することもできます。テキストの残りの部分として表示するのはcssです。たとえば、手の代わりに矢印を表示するのは次のとおりです。

a.dummy {  
    cursor:default;  
}  
于 2008-09-08T09:23:06.817 に答える
2

リンクのアクティブ化を停止する場合、通常は "javascript:void(0);" にリンクします。つまり、次のようになります。

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

于 2008-09-08T09:26:54.377 に答える
2

すべての入力に感謝します。短い答えは「いいえ、できません(とにかくうまくいきません)」であるように見えるので、難しい方法で条件付きコードを追加する必要があります。

于 2008-09-08T10:16:00.590 に答える
0

asp.netでdatabindを使用している場合は、データバインディングイベントを処理し、そのユーザーが無効になっている場合は、NavigateUrlを設定しないでください。

于 2008-09-08T22:06:48.730 に答える
0

NavigationUrlプロパティを設定しないようにしたことがありますか?これが設定されていない場合は、スパンとしてレンダリングされる可能性があります。

于 2008-09-08T22:09:52.560 に答える
0

.fusion-link-wrapper { ポインター イベント: なし; }

于 2017-12-18T02:32:29.957 に答える