Если я правильно понял ...
Если ваш список находится на главной странице ...
<ul runat="server" id="list">
<li runat="server" id="home">Home</li>
<li runat="server" id="news">News</li>
</ul>
... тогда вы можете сделать это на своей странице содержания .. .
Control list = this.Page.Master.FindControl("list");
Тогда объекты li будут элементами управления в объекте списка - например, list.Controls
. Или вы можете ...
Control home = this.Page.Master.FindControl("list").FindControl("home");
... найти определенные элементы управления списком.
При использовании runat = "server" в элементах управления HTML эквивалентным объектом на стороне сервера будет HtmlGenericControl .
Если вы хотите применить класс к тегам LI , вам нужно будет преобразовать объект LI в HtmlGenericControl , а затем используйте свойство Attributes . Например ...
HtmlGenericControl home = (HtmlGenericControl)this.Page.Master.FindControl("list").FindControl("home");
home.Attributes["class"] = "className";
Надеюсь, что это поможет ...
Попробуйте это и дайте мне знать, работает ли он.
В CSS создайте два класса, которые называются примерно так:
.normalLink
{
background-color:#fff;
}
.selectedLink
{
background-color:#555;
}
В ваших ссылках:
<li id="mainHome" runat="server"><a title="Home" href="users.aspx" class="<%= SetSelectedLink("users.aspx") %>">Home</a>
<li id="mainManage" runat="server"><a title="Manage" href="#" class="<%= SetSelectedLink("manage.aspx") %>">Manage</a></li>
В вашем коде за страницей :
Если вы используете главную страницу, сделайте следующий бит в главном коде позади, иначе вы можете вставить его в каждый обычный aspx-код, который в нем нуждается
public string SetSelectedLink(string linkURL)
{
if(Request.Url.ToLower().Contains(linkURL.ToLower())))
{
return "selectedLink";
}
else
{
return "normalLink";
}
}
Изменить: Это работает, только если вы замените href # правильными URL!