Когда я хочу, чтобы определенная ссылка на меню была активной на данной странице, я использую этот подход в Razor:
На макете мастера у меня есть эти проверки:
var active = ViewBag.Active;
const string ACTIVE_CLASS = "current";
if (active == "home")
{
ViewBag.ActiveHome = ACTIVE_CLASS;
}
if (active == "products")
{
ViewBag.ActiveProducts = ACTIVE_CLASS;
}
и др.
Меню html в макете макета:
<ul>
<li class="@ViewBag.ActiveHome"><a href="/">Home</a></li>
<li class="@ViewBag.ActiveProducts"><a href="@Url.Action("index", "products")">Products</a></li>
</ul>
При указании страницы макета для использования на другом представлении:
@{
ViewBag.Active = "home";
Layout = "~/Views/Shared/_Layout.cshtml";
}
Есть ли лучший подход для разделения активных ссылок, чем тот, который я сейчас использую?