教你用最简单的方法在 MVC 中让菜单高亮起来

不知道有多少同学对菜单选中时的高亮选择的用 js 来控制?
我来分享用 Razor 语法就能搞定的一种方法。

以Bootstrap的样式为例

<ul class="nav nav-pills nav-stacked">
    <li class="active"><a href="#">菜单1</a></li><!--这个菜单会高亮-->
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
    <li><a href="#">菜单4</a></li>
    ...
</ul>

这是一个竖着的菜单样式,当 li 有 active 样式的时候会呈现选中高亮的状态
我就不贴效果图了,你可以去 https://v3.bootcss.com/components/#nav-pills 自己看。

上一个 Razor 代码

@{
    //得到当前访问的 controller 名称
    var controller = ViewContext.RouteData.Values["controller"].ToString();
}
<ul class="nav nav-pills nav-stacked">
    <li @if(controller == "User"){ <text>class="active"</text> }><a href="#">用户管理</a></li>
    <li @if(controller == "Role"){ <text>class="active"</text> }><a href="#">角色管理</a></li>
    ...
</ul>

这只是一个简单的判断,当判断为 true 时,就输出 active 的样式。
<text></text>这个是 Razor 里的特殊语法,你会发现它会变成背景色金黄的颜色,表示嵌入的纯文本字符串。

如果你有其他的class,仅仅是想加一个active 的话可以这样写:

<li class="text-muted text-danger @if(controller == "Role"){ <text>active</text> }"><a href="#">角色管理</a></li>

如果你是一个下拉菜单,可以配合 action 的名字:

@{
    var controller = ViewContext.RouteData.Values["controller"].ToString();
    var action = ViewContext.RouteData.Values["action"].ToString();
}

之后的判断还是一样:

<ul class="nav nav-pills nav-stacked">
    <li @if(controller == "User"){ <text>class="active"</text> }><a href="#">用户管理</a></li>
    <li @if(controller == "Role" && action == "AddRole"){ <text>class="active"</text> }><a href="#">新增角色</a></li>
    ...
</ul>

这是服务器端的代码,需要刷新页面的,用 Ajax 的还是继续写你的 js 吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我 Teacher 周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值