Razor (または任意のサーバー側コード レンダリング マークアップ) をより効果的にデバッグするためのヒント:
- レンダリングされた HTML を表示します。それが正しいか?
- サーバーが必要な値をレンダリングしていることを確認するまで、スタイル/スクリプトを削除します。
- コントローラーにブレークポイントを追加して、ビューにデータを渡していることを確認します。あなたのレンダリングロジックは問題ないかもしれません。
とはいえ、あなたのコードは正常に動作しているようです。私はいくつかのデータをダミー化しました:
@{ var t = new { Id = 1234, tTags = new List<string> { "foo", "bar", "baz" } }; }
<b><a href="#" onmouseover="tooltip.pop(this, '#tagsdiv@(t.Id)')">tagged</a></b>
<div style="display: none;">
<div id="tagsdiv@(t.Id)">
<span class="menu">
@for( int i = 0; i < t.tTags.Count; i++ ) {
<b>@Html.ActionLink( t.tTags[i], "TagDetail", "Forums", new { tag = t.tTags[i], page = 0 }, null )</b>
}
</span>
</div>
</div>
これにより、次の結果が得られます。
<b><a href="#" onmouseover="tooltip.pop(this, '#tagsdiv1234')">tagged</a></b>
<div style="display:none;">
<div id="tagsdiv1234">
<span class="menu">
<b><a href="">foo</a></b>
<b><a href="">bar</a></b>
<b><a href="">baz</a></b>
</span>
</div>
</div>
ここで本当に間違っているように見えることの 1 つは、'#tagsdiv1234'
. ツールチップに CSS/jQuery ID セレクター (「#」)を含むID が必要ですか?
際立っているもう 1 つの点は、ツールチップ コンテナーが の外側のdiv
セットでラップされていることdisplay:none
です。ツールチップ コードがそれを表示しようとしても、その親が非表示であるため、ID が付けられた要素は常に非表示になります。
もう 1 つの可能性は、ID の要素識別子に不正な文字が含まれていることです。