2013-04-07 2 views
0

У меня возникла проблема с динамическим созданием этого выпадающего меню. Это работает, если я не буду делать это динамически.Использование бритвы для создания всплывающего меню подсказки

@t.Id работает и работает каждый раз в цикле. Я почти уверен, что первая строка неверна, поскольку я использовал id="" до этого.

<b><a href="#" onmouseover="tooltip.pop(this, '#[email protected](t.Id)')">tagged</a></b> 

<div style="display: none;"> 
    <div id="[email protected](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> 
+0

подумал, что я бы добавил всплывающие окна, но не содержит div – mxadam

+0

Что не работает? Я уволил это с некоторыми примерами данных, и он отображает список ссылок и вставляет идентификаторы, которые вы ожидаете. –

+0

Это должно сработать. Где вы получаете ошибку? Какое сообщение об ошибке вы получаете? – Shyju

ответ

0

Советы для отладки Razor (или любой код на стороне сервера визуализации разметки) более эффективно:

  1. Посмотреть тонированное HTML! это правильно?
  2. Удалите стили/скрипты, пока не убедитесь, что сервер отображает нужные вам значения.
  3. Добавьте контрольную точку к контроллеру, чтобы убедиться, что вы передаете данные в представление. Ваша логика рендеринга может быть прекрасной.

Это значит, что ваш код выглядит нормально. Я dummied вверх некоторые данные:

@{ var t = new { Id = 1234, tTags = new List<string> { "foo", "bar", "baz" } }; } 

<b><a href="#" onmouseover="tooltip.pop(this, '#[email protected](t.Id)')">tagged</a></b> 

<div style="display: none;"> 
    <div id="[email protected](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'. Вы уверены, что вашей подсказке нужен ID , включая селектор CSS/jQuery ID («#»)?

Другая вещь, которая выделяется, - это ваш контейнер для всплывающей подсказки, обернутый внешним div, установленным на display:none. Элемент ID'd всегда будет скрыт, потому что его родитель скрыт, даже если код всплывающей подсказки пытается его показать.

Другая возможность заключается в том, что ваш идентификатор содержит символ незаконный в element identifier.

+0

cheers tim havnt подумал об этом. В любом случае это довольно странно. T.Id - это просто номер (идентификатор темы), который также используется для создания кнопки actionlink для каждой темы, которая работает нормально. Ive попытался удалить каждую часть прикрепленного к нему css. Очень странно, может ли быть действительно проблемой javascript? и thats слишком большой, чтобы публиковать здесь :) – mxadam

+0

, но говоря, что если я могу сделать это «некоторым текстом», и он показывает, но вместо этого добавьте этот div к нему, и это не означает, что это не проблема javascript? confused as hell lol – mxadam

+0

Основываясь на том, что вы описали, да, это может быть проблема JS или CSS. Что делать, если вы удалите «display: none»? –

Смежные вопросы