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>

这里真正看起来不对的一件事是'#tagsdiv1234'. 您确定您的工具提示需要包含CSS/jQuery ID 选择器(“#”)的 ID 吗?

另一件突出的事情是您的工具提示容器被外部div设置为display:none. ID 的元素将始终隐藏,因为它的父元素是隐藏的,即使工具提示代码试图显示它也是如此。

另一种可能性是您的 ID 在元素标识符中包含非法字符。

于 2013-04-07T01:44:35.690 回答