Как управлять CSS-классом, применяемым к ASP.NET 4 Menu с помощью RenderingMode = List - PullRequest
1 голос
/ 11 мая 2010

Я использую элемент управления меню ASP.NET 4.0 с RenderingMode = List и пытаюсь создать соответствующий CSS. Каждый пункт меню представлен тегом

, который содержит вложенный тег с именами фиксированных классов:
для невыбранных пунктов меню уровня 1 для невыбранных пунктов меню уровня 2 для выбранного пункта меню уровня 1

... и т.д ...

То, что я хочу сделать, - это предотвратить щелчок по выбранному в данный момент пункту меню. Для этого я попытался использовать:

if (menuItem.Selected) menuItem.Selectable = false;

Это дает желаемый эффект удаления атрибута href из тега

, но также удаляет атрибут класса - и в результате мой CSS не может определить, к какому уровню принадлежит пункт меню!

Выглядит для меня как возможная ошибка, но в любом случае я не могу найти никакой документации, описывающей, какие имена CSS-классов используются, или нет какого-либо способа управлять этим (старые свойства стиля, кажется, не имеют любой эффект). В идеале я хотел бы иметь атрибуты класса "level" для тегов

, а не только для вложенных тегов
.

UPDATE

Я посмотрел на источник System.Web с помощью Reflector, и оказалось, что он явно пропускает вывод атрибутов CSS, если Selectable = false. Из MenuRendererStandards.RenderItemLinkAttributes извлекается следующее:

...
if (!item.Selectable)
{
    return needsAccessKey; // !! exits without setting class attribute
}
if (item.Selected)
{
    cssClass = cssClass + " selected";
}
writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass);
...

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Извлеките HtmlTextWriterAttribute класс в System.Web.UI пространстве имен, чтобы вы могли написать нужные атрибуты.

Надеюсь, это поможет вам.

0 голосов
/ 10 июля 2015

После того, как я узнал об этом самостоятельно, я получил объяснение от ОБНОВЛЕНИЯ оригинального поста. Спасибо тебе за это! Я проверяю текущую реализацию .net и получаю хорошие новости об этом:)

   ...
   if (!item.Selectable){
      writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass);
      return needsAccessKey;
   }

  // Selected
  if (item.Selected) {
      cssClass += " selected";
  }
  writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass);

Надеюсь, это кому-нибудь пригодится.

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