ASP.Net MVC:如何根据我所在的选项卡轻松更改导航菜单的选项卡颜色?

问题描述:

我想实现我的导航标签有点像这个网站上的,我听说这是使用ASP.Net MVC构建的。如果我使用的是stackoverflow.com/users,则“用户”菜单选项卡为橙色,而其他所有其他选项保持灰色,如果选择了其他选项卡,则选项卡会保持灰色。ASP.Net MVC:如何根据我所在的选项卡轻松更改导航菜单的选项卡颜色?

我很擅长操作css来改变颜色,当它被徘徊或选择等等,并在菜单容器中添加/删除/授权项目,但不熟悉如何更改基于标签的颜色我正在打开的标签页。任何快速和肮脏的方式来完成这个?

为每个页面的body元素分配一个唯一的id(例如<body id="users">)。在ASP.NET MVC,你可以在你的母版页body标签写的:

<body id="<%= ViewData["bodyId"] %>">

和Controller方法为每个页面放像ViewData["bodyId"] = "users";动态分配的每一页ID。

然后在你的资产净值的标记,在<一个>标签链接到该页面指定一个类具有相同的名称:在CSS

<ul> 
    <li><a href="/users" class="users">Users</a></li> 
    <li><!-- more links --></li> 
</ul> 

然后做这样的事情:

body#users a.users, body#another-page a.another-page { 
    /* include rules for how you want the current page tab to appear */ 
} 

这会将您的“当前页面”样式分配给与身体标记ID匹配的类的任何链接标记。

除了Bryan提到的,我通常在这种情况下为我的视图模型添加一个“CssClass”属性。这对于CssClass的计算有点复杂的情况也很有用(因为它可以在VM中测试)。