【问题标题】:Making nav item active based on page根据页面激活导航项
【发布时间】:2013-04-13 07:37:54
【问题描述】:

有一个子导航如下:

<div class="well sidebar-nav span3">
    <ul class="nav nav-list bs-docs-sidenav">
        <li><a href="/bio"><i class="icon-chevron-right"></i>Bio</a></li>
        <li><a href="/resume"><i class="icon-chevron-right"></i>Resume</a></li> 
    </ul>
</div>

这是由 :

加载的
@{Html.RenderAction("SubNav");}

调用非控制器操作:

    [ChildActionOnly]
    public ActionResult SubNav()
    {
        return PartialView();
    }

现在基于页面,我如何将active 添加到 subnav 内的 li 类中,以便我可以使其显示为选中/活动?

【问题讨论】:

  • 我没有在母版页上这样做,我已经看到了那个问题。你读过这个问题吗?

标签: css asp.net-mvc asp.net-mvc-3 twitter-bootstrap


【解决方案1】:

您可以使用操作名称。在运行时找到动作名称,通过模型或 ViewBag 将其传递给视图。

 [ChildActionOnly]
    public ActionResult SubNav()
    {
            var rd = Request.RequestContext.RouteData;
            string currentAction = rd.GetRequiredString("action");
            string currentController = rd.GetRequiredString("controller");
            string currentArea = rd.Values["area"] as string;
            ViewBag.ActionName = currentAction;
            return PartialView();
    }

在视图中:

<div class="well sidebar-nav span3">
    <ul class="nav nav-list bs-docs-sidenav">
        <li><a href="/bio"><i class="icon-chevron-right  @(ViewBag.ActionName == "bio" ? "ActiveClass" : "")" ></i>Bio</a></li>
        <li><a href="/resume"><i class="icon-chevron-right  @(ViewBag.ActionName == "resume" ? "ActiveClass" : "")"></i>Resume</a></li> 
</ul>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2017-09-28
    • 2017-01-22
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多