Ho cercato di trovare una soluzione appropriata per assegnare la classe "attivo/corrente" alle voci di menu dalla pagina principale. La linea è divisa in due per quanto riguarda il lato client o server.voce di menu attiva - pagina master di asp.net mvc3
Sinceramente sono nuovo su JavaScript e MVC quindi non ho un'opinione. Preferirei farlo nel modo "più pulito" e più appropriato.
Ho il seguente codice jQuery per assegnare la classe "attiva" all'elemento <li> ... l'unico problema è l'"indice" o la voce di menu di visualizzazione predefinita verrà sempre assegnata alla classe attiva, perché l'URL è sempre una sottostringa degli altri collegamenti del menu:
(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
}
});
C'è un modo migliore per farlo, ragazzi? Qualcuno potrebbe almeno aiutarmi a ottenere la versione lato client a prova di proiettile? In modo che l'"indice" o il collegamento predefinito sia sempre "attivo"? C'è un modo per assegnare un'estensione contraffatta al metodo dell'indice? come invece del solo URL di base sarebbe localhost/home/dashboard
in modo che non fosse una sottostringa di ogni link?
Sinceramente, in realtà non seguo i metodi di questo server-side, motivo per cui sto cercando di farlo lato client con jQuery ... qualsiasi aiuto sarebbe apprezzato.
Vale la pena notare htmlHelper.ActionLink() ha bisogno di "using System.Web.Mvc.Html;" – 4imble
Funziona brillantemente +1 – 4imble
Devi anche importare lo spazio dei nomi nella tua vista, se usi Razor in MVC3 puoi farlo aggiungendo @using alla tua vista –
Duncan