Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
6 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 25
1

Нужно реализовать подсветку текущего раздела меню

30.09.2012, 12:07. Показов 2557. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть сайт-каталог. В нем я создал меню (контроллер, модель и частичное представление, которые, используя рекурсивную функцию, создает список меню ul-li...ul-li). Вывел это меню в шаблоне _Layout.cshtml. Все работает, все красиво.
НО
Нужно реализовать подсветку текущего раздела меню.
И тут начались проблемы. Лично я нашел 2 варианта решения:
1) вытаскивать из запроса URL название текущего подкаталога
2) переместить вызов меню из _Layout.cshtml в представление каждой страницы и вызывать его с параметрами.

У обоих способов есть и "+" и "-".

Может у кого-нибудь есть лучшее решение?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2012, 12:07
Ответы с готовыми решениями:

Сделать подсветку текущего выбранного меню
банально, есть обычная менюшка навигации сайта, нужно сделать подсветку текущего выбранного меню...

Как вывести пользовательское свойство раздела каталога только для текущего раздела?
Для разделов каталога требуется вывести яндекс карту. В данный момент на странице выводятся все...

Узнать количество разрывов раздела и номер текущего раздела
Доброго времени суток! Подскажите, пожалуйста, как в Word в текущем документе узнать количество...

Календарь на PowerShell: добавить подсветку текущего дня
Есть старый скрипт, найденный в свое время на двинувшем ныне копыта poshcode.org. function...

13
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
10.10.2012, 17:20 2
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@{
        Dictionary<string, string> links = new Dictionary<string, string>();
 
        links.Add("Home", "/Home/Index");
        links.Add("About", "/Home/About");
    }
 
...
<div id="menu">
                    <ul>
                        @foreach (var item in links)
                        {
                            var Selected = item.Value == Request.Url.PathAndQuery ? "current_page_item" : string.Empty;
                            <li class="@Selected"><a href="@item.Value">@item.Key</a></li>
                        }
                    </ul>
                </div>
В итоге подсвечивает даже если человек не тыкал на пункт меню, а просто перешел по ссылке. Проблема такого подхода в понижении производительности. Каждый раз создавать инстанс словаря и заполнять его сам понимаешь...
0
6 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 25
11.10.2012, 12:07  [ТС] 3
Это и есть реализация первого метода о котором я писал
0
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
11.10.2012, 12:39 4
лучше Jquery
0
6 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 25
11.10.2012, 12:46  [ТС] 5
А как именно?
0
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
11.10.2012, 12:51 6
http://blog.huidesign.com/auto... ss-jquery/
0
6 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 25
11.10.2012, 12:56  [ТС] 7
Спасибо, но все же хочется надеяться что подсветку можно реализовать и на стороне сервера (без особой нагрузки)
0
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
11.10.2012, 13:18 8
А почему именно на сервере?
0
6 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 25
11.10.2012, 13:26  [ТС] 9
Ну хотя бы потому, что еще встречаются люди, у которых отключены скрипты в браузере
0
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
11.10.2012, 15:55 10
ризонно
0
6 / 6 / 0
Регистрация: 22.09.2012
Сообщений: 25
11.10.2012, 16:09  [ТС] 11
Можно попробовать вызвать _SiteLayout с параметром? Но как это сделать???
0
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
11.10.2012, 19:21 12
Передать параметры как в методы действий? Поскольку layout не принадлежит ни к какому контроллеру, то по идее нет. Попробуй поколдовать с Session или ViewData.
0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
13.10.2012, 03:37 13
А проверять Request["controller"] и Request["action"] не прокатит?
0
1 / 1 / 1
Регистрация: 10.10.2012
Сообщений: 17
13.10.2012, 10:10 14
У layout нету контроллера, если ты перейдешь по пути /Home/About то вызовется соответствующие контроллер home и действие about. Ты можешь в каждом контроллере на действиях, которые у тебя в списке меню логировать во ViewBag/ViewData текущую Url.PathAndQuery, а потом сравнивать ссылки твоих
тегов "а" со значением или вариант что я тебе раньше предлагал.

Добавлено через 18 минут
Request["controller"] и Request["action"] будут тебе показывать Home About
0
13.10.2012, 10:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2012, 10:10
Помогаю со студенческими работами здесь

Получение текущего id раздела
Имеется компонент, как из него извлечеть данные о текущем активном разделе. Т.е есть стандартный...

Вывод элементов текущего раздела
Добрый день. Есть компонент bitrix:news.detail и в нём компонент &quot;bitrix:catalog.section, которым я...

Ссылка на товары текущего раздела
Добрый день! Подскажите пожалуйста, как реализовать следующий функционал на битриксе: ...

Реализовать подсветку синтаксиса
Как сделать свой язык программирования! И форматирование текста по цвету. Пример: запускаю...

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

Как двигать подсветку в меню?
Здравствуйте дорогие форумчане. Столкнулся с такой проблемой. Есть меню, и есть зеленая подсветка....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru