You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC:为控制器下所有操作的头部导航添加样式类

解决ASP.NET MVC导航栏控制器下所有路径高亮问题

方案一:后端Razor判断(推荐)

直接在视图中通过ASP.NET MVC的路由上下文获取当前控制器名称,动态给对应导航项添加高亮类,这种方式不受前端路径变化影响,稳定性更强。

修改后的导航代码:

<nav class="navbar navbar-expand-md navbar-light bg-light header-box-shadow">
    <div class="collapse navbar-collapse" id="appNavigation">
        <div class="navbar-nav">
            <a class="nav-link @(ViewContext.RouteData.Values["controller"].ToString() == "Home" ? "text-white bg-primary" : "")" 
               asp-action="Index" asp-controller="Home">Home</a>
            <a class="nav-link @(ViewContext.RouteData.Values["controller"].ToString() == "Entry" ? "text-white bg-primary" : "")" 
               asp-action="Index" asp-controller="Entry">Manual Entry</a>
        </div>
    </div>
</nav>

逻辑说明:利用Razor三元表达式,判断当前请求的控制器是否为Home或Entry,匹配时自动添加高亮类。无论访问该控制器下的哪个Action(比如Home/GetJobs、Entry/Review),对应导航项都会保持高亮状态。

方案二:前端jQuery改进

如果不想改动后端逻辑,可修改JS判断逻辑,不再精确匹配导航项的href,而是通过路径前缀匹配控制器范围:

修改后的JS代码:

$(function() {
    const currentPath = location.pathname;
    
    // 根路径或Home控制器下的所有路径都高亮Home导航
    if (currentPath === "/" || currentPath.startsWith("/Home/")) {
        $("nav a.nav-link[asp-controller='Home']").addClass("text-white bg-primary");
    }
    
    // Entry控制器下的所有路径都高亮Entry导航
    if (currentPath.startsWith("/Entry/")) {
        $("nav a.nav-link[asp-controller='Entry']").addClass("text-white bg-primary");
    }
});

逻辑说明:通过startsWith判断当前路径是否以目标控制器的路径前缀开头,同时将根路径/归为Home导航的高亮范围。使用asp-controller属性选择器定位导航项,比依赖href更可靠,不会因路由配置变化失效。

内容的提问来源于stack exchange,提问作者Zach Hartt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:20:32