Лучший подход к стилизации навигации с использованием неупорядоченных списков в ASP.NET

Каков наилучший подход к программной настройке стилей в неупорядоченном списке, используемом для навигации, в ASP.NET (не MVC), чтобы соответствующий элемент меню был оформлен как активный элемент, если эта страница просматривается?

Скорее всего, это будет использоваться вместе с MasterPage.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
988
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Ответ на ваш вопрос во многом зависит от того, как ваш список реализован {Пользовательский контроль или нет и т. д.}. Как я бы это сделал, это реализовать список, который будет сгенерирован пользовательским элементом управления.

У меня был бы тег UserControl для каждого элемента с чем-то вроде:

<{...} class = "GeneratedMenuItem"> {...}

И у меня были бы соответствующие стили в таблице стилей; конечно, если бы он был в пользовательском элементе управления, вы могли бы использовать темы (но это зависит от того, какую версию ASP.net вы используете.

Как использовать темы? Это будет приложение ASP.NET 2.0 (VS 2008 .Net 3.5)

Brian Behm 22.11.2008 01:58

Прошло много времени с тех пор, как я использовал темы, но я предполагаю, что можно установить тему для их пользовательского элемента управления. Сейчас, когда я думаю об этом, я думаю, что темы пользовательских элементов управления не работали для ASP.NET 2.0. Были ли они реализованы в .NET 3.5, я не уверен.

Frank V 22.11.2008 02:14

Хороший вопрос, я пробовал разные способы сделать это еще с плохих старых времен, когда гадюка, и мне еще предстоит найти идеальный молоток.

Обычно я использовал Request.Url.AbsoluteUri (или аналогичный) в качестве аргумента для любой функции рендеринга и чаще всего устанавливаю класс css «текущий» или аналогичный на соответствующем узле, а также при необходимости рендеринг дочерних узлов. .

Я чаще всего использовал комбинацию xml / xsl, с которой обычно можно работать с большинством платформ cms, хотя я никогда не был так доволен накладными расходами, связанными с запуском преобразования xsl только для вывода списка навигации, но если вы знаете xsl, - очень хороший инструмент для создания html, и вы всегда можете кэшировать вывод - для небольших статических html-сайтов, которые появляются время от времени, я часто использую этот подход в процессе сборки для визуализации статической разметки меню.

Также несколько раз использовали функциональность карты сайта aspnet, что очень хорошо, если вы используете с ней дружественные к css адаптеры - рендеринг по умолчанию делает очень уродливую разметку.

Я нашел эту статью ранее на этой неделе: http://blog.devarchive.net/2008/01/auto-generate-strong-typed-navigation.html, который использует шаблоны t4 для создания строго типизированного класса навигации, и я определенно буду исследовать это дальше.

Я применил этот подход к созданию элементов управления гиперссылками ASP.NET для каждого из моих элементов навигации на моей главной странице.

Затем на главной странице я создал общедоступный метод, который назначил бы соответствующий «выбранный» стиль CSS указанному мной элементу управления:

Public Sub SetNavigationPage(ByVal MenuName As String)

   DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent"

End Sub

Затем на моих информационных страницах мне просто нужно было соответствующим образом ссылаться на главную страницу.

Dim myMaster As EAF = DirectCast(Me.Master, EAF)
myMaster.SetNavigationPage("hypSearchRequest")

Это дало мне возможность добавлять / удалять элементы навигации на различных страницах, а также при необходимости назначать несколько страниц для параметра навигации администратора.

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

Если вы установите свойство видимости в CSS, меню все равно будет отображаться в разметке, но не отображается в браузере. Это позволит людям, просматривающим вашу разметку, узнать, что доступно больше меню. Я думаю, что видимость на стороне сервера - лучший подход.

Brian Behm 22.11.2008 18:00

Другие вопросы по теме