2012-08-10 3 views
0

У меня есть CSS, который управляет моими гиперссылками asp:LinkButton, и я хочу узнать, как я могу установить свойство WebControl's CssClass для текущей страницы всякий раз, когда загружается MasterPage.Назначить CssClass LinkButton в MasterPage

Эти asp:LinkButton гиперссылок на MasterPage содержатся в списке:

<ul id="menu"> 
    <li class="sprite"> 
    <asp:LinkButton ID="linkButton1" runat="server" PostBackUrl="~/linkButton1.aspx"> 
     <span>link 1</span> 
    </asp:LinkButton> 
    </li> 
    <li class="sprite"> 
    <asp:LinkButton ID="linkButton2" runat="server" PostBackUrl="~/linkButton2.aspx"> 
     <span>link 2</span> 
    </asp:LinkButton> 
    </li> 
    <li class="sprite"> 
    <asp:LinkButton ID="linkButton3" runat="server" PostBackUrl="~/linkButton3.aspx"> 
     <span>link 3</span> 
    </asp:LinkButton> 
    </li> 
</ul> 

В MasterPage я попытался установить CssClass используя событие Page_Load:

protected void Page_Load(object sender, EventArgs e) { 
    if (!IsPostBack) { 
    linkButton1.CssClass = ""; 
    linkButton2.CssClass = ""; 
    linkButton3.CssClass = ""; 
    string linkButtonID = Request.RawUrl; 
    if (-1 < linkButtonID.IndexOf("linkButton2")) { 
     linkButton2.CssClass = "active"; 
    } else if (-1 < linkButtonID.IndexOf("linkButton3")) { 
     linkButton3.CssClass = "active"; 
    } else { 
     linkButton1.CssClass = "active"; // default 
    } 
    } 
} 

Мой CssClass="active" не появляется чтобы быть установленным, и, глядя на источник страницы, быстро проверяет, что ни один из моих элементов управления LinkButton не имеет свойства CssClass.

Поскольку это трудно представить, я собрал jsFiddle. Сайт не поддерживает ASP, но это может помочь вам визуализировать то, что я пытаюсь сделать:

http://jsfiddle.net/jp2code/kZQwC/

Как бы я получить мою активную страницу, чтобы установить CssClass?

+1

Переместить код на событие Page_Init и дайте мне знать, если это решит проблему – TheGeekYouNeed

ответ

1

Вы назначаете класс в !IsPostBack. Я боюсь, что ваш url в то время не имеет linkButton1, linkButton2 или linkButton3.

Вы принимаете class assignment code out of the if condition и проверяете, выполняются ли эти условия и получаете класс.

Изменить

if (!IsPostBack) { 
    linkButton1.CssClass = ""; 
    linkButton2.CssClass = ""; 
    linkButton3.CssClass = ""; 
    string linkButtonID = Request.RawUrl; 
    if (-1 < linkButtonID.IndexOf("linkButton2")) { 
     linkButton2.CssClass = "active"; 
    } else if (-1 < linkButtonID.IndexOf("linkButton3")) { 
     linkButton3.CssClass = "active"; 
    } else { 
     linkButton1.CssClass = "active"; // default 
    } 
} 

Для

linkButton1.CssClass = ""; 
linkButton2.CssClass = ""; 
linkButton3.CssClass = ""; 
string linkButtonID = Request.RawUrl; 
if (-1 < linkButtonID.IndexOf("linkButton2")) { 
    linkButton2.CssClass = "active"; 
} else if (-1 < linkButtonID.IndexOf("linkButton3")) { 
    linkButton3.CssClass = "active"; 
} else { 
    linkButton1.CssClass = "active"; // default 
} 
+0

Спасибо! Извините, мне потребовалось столько времени, чтобы принять ответ, но мне пришлось подождать, пока я не смогу перестроить/опубликовать код, чтобы проверить его. – jp2code

Смежные вопросы