【问题标题】:ASP.Net MVC: How can I easily change the tab color of my navigation menu based on the tab that I'm on?ASP.Net MVC:如何根据我所在的选项卡轻松更改导航菜单的选项卡颜色?
【发布时间】:2010-12-24 07:53:39
【问题描述】:

我想实现我的导航选项卡有点像这个网站上的那些,我听说这是使用 ASP.Net MVC 构建的。如果我在 stackoverflow.com/users 上,则“用户”菜单选项卡为橙色,所有其他选项卡保持灰色,如果选择了不同的选项卡,则相同。

我很擅长操纵 css 以在悬停或选择时更改颜色等,以及在菜单容器中添加/删除/授权项目,但不熟悉如何根据选项卡更改选项卡的颜色我所在的页面。有什么快速而肮脏的方法来完成这个吗?

【问题讨论】:

    标签: c# asp.net-mvc css menu master-pages


    【解决方案1】:

    为每个页面的正文元素分配一个唯一的 id(例如<body id="users">)。在 ASP.NET MVC 中,您可以在母版页中使用 body 标记,如下所示:

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

    并且在每个页面的 Controller 方法中放置 ViewData["bodyId"] = "users"; 之类的内容,以便为每个页面动态分配 id。

    然后在您的导航标记中,在链接到该页面的 标记上分配一个具有相同名称的类:

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

    然后在css中做这样的事情:

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

    这会将您的“当前页面”样式分配给任何具有与正文标签 ID 匹配的类的链接标签。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-11-25
        • 2011-04-14
        • 1970-01-01
        • 1970-01-01
        • 2020-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多