Найдите элемент управления UnorderedList ‹UL› внутри главной страницы со страницы содержимого в asp.net.

Привет, ребята,

Я хочу найти элемент управления 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 цветом... Пожалуйста, дайте мне предложение...


person ACP    schedule 19.11.2009    source источник


Ответы (2)


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

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

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

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

person Community    schedule 19.11.2009
comment
Я нашел идентификатор UL, но не могу найти идентификатор LI, который является домом - person ACP; 19.11.2009
comment
Чтобы найти LI, вам нужно будет сделать это.Page.Master.FindControl(list).FindControl(home); - person ; 19.11.2009
comment
мелок, который сделал свое дело, но я не могу применить css к этому LI ... Как применить css - person ACP; 19.11.2009
comment
@Pandiya - я снова обновил свой пример! Вы сможете добавить класс CSS в исходный код, следуя моему примеру. - person ; 19.11.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";
 }
}

Изменить: это работает, только если вы замените свой href # правильными URL-адресами!

person adrianos    schedule 19.11.2009
comment
Привет, Адрианос, я хочу использовать CSS для этого ‹li id=mainHome runat=server› - person ACP; 19.11.2009
comment
вы хотите вызвать SetSelectedLink для вашего элемента ‹li› вместо вашего элемента ‹a›? затем переместите его в элемент ‹li› - person adrianos; 19.11.2009