He estado explorando tratando de encontrar una solución adecuada para asignar clases "activas/actuales" a elementos de menú de la página maestra. La línea se divide en el medio con respecto a si hacer este lado del cliente vs servidor.elemento de menú activo - asp.net mvc3 página maestra
A decir verdad soy nuevo en JavaScript y MVC, así que no tengo una opinión. Preferiría hacer esto de la manera "más limpia" y más apropiada.
Tengo el siguiente código jQuery para asignar la clase "activa" al elemento <li> ... el único problema es que el elemento de menú "índice" o vista predeterminada siempre tendrá asignada la clase activa, porque la URL siempre es una subcadena de los otros enlaces del menú:
(default) index = localhost/
link 1 = localhost/home/link1
link 2 = localhost/home/link1
$(function() {
var str = location.href.toLowerCase();
$('#nav ul li a').each(function() {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$(this).parent().attr("class","active"); //hightlight parent tab
}
});
¿hay una mejor manera de hacer esto, chicos? Al menos alguien me ayudaría a obtener la versión del cliente a prueba de balas? ¿Para que el "índice" o enlace predeterminado siempre esté "activo"? ¿Hay alguna forma de asignar una extensión falsa al método de índice? ¿en lugar de solo la URL base sería localhost/home/dashboard
para que no sea una subcadena de cada enlace?
A decir verdad, realmente no sigo los métodos de este lado del servidor, por lo que trato de hacerlo desde el lado del cliente con jQuery ... cualquier ayuda sería apreciada.
Merece la pena señalar que htmlHelper.ActionLink() necesita "usar System.Web.Mvc.Html;" – 4imble
Funciona de forma brillante +1 – 4imble
También necesita importar el espacio de nombres en su vista, si usa Razor en MVC3 puede hacerlo simplemente agregando @using a su vista –
Duncan