Почему пункт меню не выбирается после нажатия на него и открытия его страницы? - PullRequest
1 голос
/ 25 июля 2011

Интересно, почему About MenuItem не выбран (выделен) после того, как я его нажал!

Это шаблон по умолчанию для веб-приложения ASP.Net. Есть ли что-то готовое, или я должен реализовать это сам?

enter image description here

CSS:

/* TAB MENU   
----------------------------------------------------------*/
div.hideSkiplink
{
    background-color:#3a4f63;
    width:100%;
}

div.menu
{
    padding: 4px 0px 4px 8px;
}

div.menu ul
{
    list-style: none;
    margin: 0px;
    padding: 0px;
    width: auto;
}

div.menu ul li a, div.menu ul li a:visited
{
    background-color: #465c71;
    border: 1px #4e667d solid;
    color: #dde4ec;
    display: block;
    line-height: 1.35em;
    padding: 4px 20px;
    text-decoration: none;
    white-space: nowrap;
}

div.menu ul li a:hover
{
    background-color: #bfcbd6;
    color: #465c71;
    text-decoration: none;
}

div.menu ul li a:active
{
    background-color: #465c71;
    color: #cfdbe6;
    text-decoration: none;
}

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

Я некоторое время боролся с этим предметом и задавался вопросом, почему решение vanilla ASP.NET не поддерживает то, что нам нужно. После некоторых экспериментов я предложил это исправление, которое включает изменение двух файлов в ванильном решении:

1) измените файл Styles / Site.css , чтобы добавить определение и изменить другое. а) добавьте это в раздел меню:

div.menu ul li .selected
{
    background-color: #bfcbd6;
    color: #465c71;
    text-decoration: none;
}

b) Удалите директиву посещения, изменив эту строку:

div.menu ul li a, div.menu ul li a:visited

к этому:

div.menu ul li a

2) Появится выделенный пункт меню «выбрано». Однако выбранный элемент очищается каким-либо образом в последовательности обратного вызова страницы. Чтобы обойти эту проблему, я сделал это изменение в файле Site.Master.cs , в основном, чтобы выбрать вкладку, которая содержит URL-адрес, который мы ищем:

private void HighlightSelectedMenuItem()
{
    string MyURL = Request.Url.AbsoluteUri;
    foreach (MenuItem mi in NavigationMenu.Items)
    {
        string mytest = System.IO.Path.GetFileName(mi.NavigateUrl);
        if (MyURL.Contains(mytest))
        {
            mi.Selected = true;
        }
    }
}

Теперь просто добавьте этот метод в ваш метод Page_Load, и все готово.

0 голосов
/ 29 июля 2011

Используете ли вы источник данных sitemap и sitemap? Насколько мне известно, они нужны для автоматической вставки «выбранного» класса в элементы списка.

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

#mainmenu ul li a.selected {
  background-color: Yellow;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...