C#.NET сайт - добавление CSS-класс для элементов меню


Я использую PHP уже 7 лет или около того, но на сегодняшний день я вынужден использовать .NET для проекта. Просто для insite:

Особенности этого проекта:

. NET4 Viewstate = false

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

<div id="menu">
    <ul>
        <li><a href="default.aspx" title="Home" >Home</a></li>
        <li><a href="products.aspx" title="Products">Products</a></li>
        <li><a href="prices.aspx" title="Size &amp; Price">Size &amp; Price</a></li>
        <li><a href="formats.aspx" title="File Formats">File Formats</a></li>
    </ul>
</div>

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

<div id="menu">
    <ul>
        <li><a href="default.aspx" title="Home" >Home</a></li>
        <li><a href="products.aspx" class="active" title="Products">Products</a></li>
        <li><a href="prices.aspx" title="Size &amp; Price">Size &amp; Price</a></li>
        <li><a href="formats.aspx" title="File Formats">File Formats</a></li>
    </ul>
</div>

Любая помощь будет очень признательна!

Ура :)

3 4

3 ответа:

Множество способов сделать это, один из них-добавить скрипт на страницу "slave", который задает класс соответствующего тега.

<li><a href="default.aspx" title="Home" id="aHome" >Home</a></li>
<li><a href="products.aspx" title="Products" id="aProducts">Products</a></li>

Затем в продуктах.aspx вы можете сделать:

<SCRIPT>document.getElementById('aProducts').setAttribute('class', 'active');</SCRIPT>

Это не ответ на ваш вопрос, но это было в категории CSS, поэтому я решил, что по крайней мере прокомментирую :)

Я настоятельно рекомендую вам установить статические классы для каждого элемента списка и в сочетании с классами тела в CSS использовать что-то вроде:

<style type="text/css"><!--
    body.products #menu li.products a,
    body.otherpage1 #menu li.otherpage1 a,
    body.otherpage2 #menu li.otherpage2 a,
    body.otherpage3 #menu li.otherpage3 a,
    body.otherpage4 #menu li.otherpage4 a, { /* your styles here*/ }
--></style>

Я думаю, что использование C# для того, чтобы Просто задать класс, немного перебор, вот и все:)

Я бы начал с преобразования ссылок в серверные элементы управления. Смотрите страницу MSDN для . Оттуда я бы сделал интерфейс для своей главной страницы, так что если мне когда-нибудь понадобится изменить главные страницы в будущем, я могу реализовать тот же интерфейс и не беспокоиться о том, что сломаю свою сборку (мы публично представим некоторые свойства на следующем шаге, так что это будет полезно).


public interface IMasterPage
{
    String LnkHomeClass { get; set; }
    String LnkProductsClass { get; set; }
    ...
} 

Теперь, как я уже упоминал, предоставьте атрибут CssClass для ваших гиперссылок в коде. вашей главной страницы.


public string LnkProductsClass
{
    get 
    {
        return LnkProducts.CssClass;    
    }
    set
    {
        LnkProducts.CssClass = value;
    }
}

Теперь вы можете установить их на ваших дочерних страницах.


IMasterPage masterPage = Master as IMasterPage;
if (masterPage != null)
{
    masterPage.LnkProductsClass = “active”;
} 

Другой вариант, но менее знакомый мне, может заключаться в использованиивложенных мастер-страниц .