0

このドロップダウン メニューを動的に生成する際に問題が発生しています。これは、動的に作成していない場合に機能します。

@t.Id機能しており、ループのたびに異なります。id=""この方法で以前に使用したので、最初の行が間違っていると確信しています。

<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">hhhh<br />
            nnnn
            @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>
4

1 に答える 1

0

Razor (または任意のサーバー側コード レンダリング マークアップ) をより効果的にデバッグするためのヒント:

  1. レンダリングされた HTML を表示します。それが正しいか?
  2. サーバーが必要な値をレンダリングしていることを確認するまで、スタイル/スクリプトを削除します。
  3. コントローラーにブレークポイントを追加して、ビューにデータを渡していることを確認します。あなたのレンダリングロジックは問題ないかもしれません。

とはいえ、あなたのコードは正常に動作しているようです。私はいくつかのデータをダミー化しました:

@{ 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 の要素識別子に不正な文字が含まれていることです。

于 2013-04-07T01:44:35.690 に答える