Lorsque je veux qu'un lien de menu spécifique soit actif sur une page donnée, j'utilise cette approche dans Razor :
Sur la maquette principale, j'ai ces contrôles :
var active = ViewBag.Active;
const string ACTIVE_CLASS = "current";
if (active == "home")
{
ViewBag.ActiveHome = ACTIVE_CLASS;
}
if (active == "products")
{
ViewBag.ActiveProducts = ACTIVE_CLASS;
}
etc.
Le menu html sur la maquette principale :
<ul>
<li class="@ViewBag.ActiveHome"><a href="stackoverflow.com/">Home</a></li>
<li class="@ViewBag.ActiveProducts"><a href="@Url.Action("index", "products")">Products</a></li>
</ul>
Lorsque vous spécifiez la page de mise en page à utiliser sur une autre vue :
@{
ViewBag.Active = "home";
Layout = "~/Views/Shared/_Layout.cshtml";
}
Existe-t-il une meilleure approche pour séparer les liens actifs que celle que j'utilise actuellement ?