Найдите элемент управления UnorderedList <UL>внутри главной страницы со страницы содержимого в asp.net - PullRequest
6 голосов
/ 19 ноября 2009

Хай, ребята,

Я хочу найти элемент управления UL, а затем найти LI в этом UL и назначить ему класс css со страницы содержимого ....

<ul id="mainMenu" runat="server" style="width:350px;">
            <li id="mainHome" runat="server"><a title="Home" href="#" class="home">Home</a></li>
            <li id="mainManage" runat="server"><a title="Manage" href="#" class="manage">Manage</a></li>
            <li id="mainEnquiry" runat="server"><a title="Enquiry" href="#" class="enquiry">Enquiry</a></li>
            <li id="mainReport" runat="server"><a title="Report" href="#" class="report">Reports</a></li>

            </ul>

Если пользователь нажимает кнопку домой, он перенаправляется на страницу users.aspx, и я хочу выделить Home LI цветом ... Пожалуйста, предложите мне ...

Ответы [ 2 ]

7 голосов
/ 19 ноября 2009

Если я правильно понял ...

Если ваш список находится на главной странице ...

<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 , а затем использовать Атрибуты свойство. Например ...

HtmlGenericControl home = (HtmlGenericControl)this.Page.Master.FindControl("list").FindControl("home");

home.Attributes["class"] = "className";

Надеюсь, это поможет ...

2 голосов
/ 19 ноября 2009

Повернись и дай мне знать, работает ли она.

В 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";
 }
}

Edit: Это работает только в том случае, если вы замените свой href # на соответствующие URL!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...