Отсутствует всплывающий класс в меню ASP.NET для узлов без URL - PullRequest
3 голосов
/ 13 сентября 2010

У меня небольшая проблема с тем, что значок всплывающего окна в элементе управления ASP не отображается, если у узла карты сайта нет URL-адреса.В качестве примера возьмем следующие узлы карты сайта:

<siteMapNode title="Top 1" url="~/Top1.aspx">
  <siteMapNode title="Sub 1" url="~/Sub1.aspx" />
</siteMapNode>
<siteMapNode title="Top 2">
  <siteMapNode title="Sub 2" url="~/Sub2.aspx" />
</siteMapNode>

Первый элемент верхнего уровня - Top 1 - получает всплывающий класс CSS, записанный в тег, охватывающий метку.Однако второй предмет высшего уровня - Top 2 - не получает класс.Поскольку этот класс обычно используется для удержания стрелки, указывающей, что под элементом есть больше содержимого, здесь есть небольшая проблема с удобством использования.

У кого-нибудь есть обходной путь для этого?Или, наоборот, является ли узел карты сайта без атрибута URL каким-либо образом нарушающим предполагаемое использование элемента управления?

Редактировать: эта проблема была исправлена ​​в .NET 4.5: https://connect.microsoft.com/VisualStudio/feedback/details/600069/sitemap-menu-nodes-without-a-url-dont-display-a-popout-image-when-child-nodes-exist

Ответы [ 3 ]

1 голос
/ 17 сентября 2010

Таким образом, похоже, что это происходит только в ASP.NET4 и все было хорошо в предыдущих версиях. Я называю это ошибкой в ​​более новом режиме рендеринга элементов управления. Больше информации здесь: http://www.troyhunt.com/2010/09/net4-web-apps-and-mysteriously-absent.html

1 голос
/ 21 августа 2012

Итак, после долгого поиска исправления я наткнулся на предложение использовать jquery. Работает отлично! Просто импортируйте jquery и поместите следующее в тег head. Это добавит эти треугольники (или что вы используете) обратно к узлам, которые имеют ссылки под ними. Надеюсь, это поможет!

<script language="javascript" type="text/javascript">
    //the following script adds the triangles back into the menu for items that don't directly link to anything.
    $(document).ready(function () {
        $("li > a.static").each(function () {
            if ($(this).parent().children().length > 1) {
                $(this).addClass("popout");
            }
        });          
    });
</script>
0 голосов
/ 17 сентября 2010

Попробуйте установить для свойства url значение #:

<siteMapNode title="Top 2" url="#">

Вероятная причина ошибки: без поля URL узел не является ссылкой, а CSS настроен для применения к ссылкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...