2010-10-18 14 views
0

J'ai un menu qui est créé à partir de la base de données. Lorsque les utilisateurs naviguent dans les pages, la page en cours est mise en surbrillance avec la classe css.Comment puis-je mettre en surbrillance la page en cours sur le menu lorsque vous utilisez OutputCache avec ASP.Net MVC 2?

Menu est rendu avec le Html.RenderAction("Menu","Home");

En raison d'être le menu i utilise le dicté par les données nouvelles ChildActionCache attribut qui est dans le projet ASP.NET MVC 2 Futures pour mettre en cache le menu.

C'est là que le problème commence, car l'affichage du menu à partir du cache "surligner la page en cours" ne fonctionne plus.

Comment puis-je résoudre ce problème?

Merci à l'avance

Répondre

0

Je suis venu avec cette solution hier.

$("#nav-side,#nav-footer").find("a[href='" + window.location.pathname + "']").each(function() { 
     $(this).addClass("current"); 
}); 
1

La principale façon de le fixer est d'arrêter la mise en cache du menu. :-P

Sinon, n'indiquez pas la page en cours du serveur, mais faites-le plutôt avec une certaine qualité jQuery côté client; De cette façon, le serveur peut toujours mettre en cache le menu, et le client changera l'apparence du lien dans le menu pour la page en cours.

Bien sûr, cette deuxième solution ne fonctionnerait pas sur les navigateurs sans JS activé, mais l'OMI est un compromis équitable.

+0

Merci pour la réponse. jQuery est ce que je pensais. Comme vous l'avez dit et je suppose que le chemin est la voie jquery –