Ya no necesitas indagar más en otras webs ya que estás al sitio exacto, contamos con la respuesta que buscas y sin complicaciones.
Solución:
Para acceder a estos controles desde el lado del servidor, debe hacerlos runat=”server”
en el código subyacente:
foreach(Control ctrl in nav.controls)
if(!ctrl is HtmlAnchor)
string url = ((HtmlAnchor)ctrl).Href;
if(url == GetCurrentPage()) // <-- you'd need to write that
ctrl.Parent.Attributes.Add("class", "active");
El siguiente código se puede usar para encontrar un control con nombre en cualquier lugar dentro de la jerarquía de control:
public static Control FindControlRecursive(Control rootControl, string id)
if (rootControl != null)
if (rootControl.ID == id)
return rootControl;
for (int i = 0; i < rootControl.Controls.Count; i++)
Control child;
if ((child = FindControlRecursive(rootControl.Controls[i], id)) != null)
return child;
return null;
Así que podrías hacer algo como:
Control foundControl= FindControlRecursive(Page.Master, "theIdOfTheControlYouWantToFind");
((HtmlControl)foundControl).Attributes.Add("class", "active");
Olvidé mencionar previamente que necesita runat="server" en cualquier control que desee poder encontrar de esta manera =)
Agregue runat="server" en las etiquetas li en la página maestra y luego agregue esto al evento page_load apropiado para agregar la clase 'activa' a li en la página maestra
HtmlGenericControl li = HtmlGenericControl)Page.Master.FindControl("capturas de pantalla"); li.Attributes.Add("clase", "activo");
Recuerda algo, que tienes la opción de parafrasear si diste con el resultado.