javascript - 将导航栏菜单类设置为事件状态,直到单击另一个菜单或直到用户停留在某个 Controller 中?

标签 javascript jquery css asp.net-mvc menuitem

在我元素的菜单栏中,当单击某个菜单时,我将其类设置为事件。这是通过以下代码完成的

public static class MenuExtensions
{
    public static MvcHtmlString MenuItem(
    this HtmlHelper htmlHelper,
    string text,
    string action,
    string controller
    )
    {
        var li = new TagBuilder("li");
        var routeData = htmlHelper.ViewContext.RouteData;
        var currentAction = routeData.GetRequiredString("action");
        var currentController = routeData.GetRequiredString("controller");
        if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
            string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
        {
            li.AddCssClass("active");
        }
        li.InnerHtml = htmlHelper.ActionLink(text, action, controller).ToHtmlString();
        return MvcHtmlString.Create(li.ToString());
    }
}

这就是我创建菜单栏的方式

<ul class="nav-pills">
    //<li> tags class is set to active when clicked
    <li>@Html.MenuItem("Account","Details","Account")</li>
    <li>@Html.MenuItem("Contacts","Index","AddressBook")</li>
    <li>@Html.MenuItem("SomeMenu","Index","Appointment")</li>
    <li>@Html.MenuItem("Hello "+User.Identity.Name+"!","Manage","Account")</li>
    <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
</ul>

这里是单击Account 菜单时menubar 的外观示例 enter image description here 现在,当我单击编辑按钮时,橙色条是帐户菜单消失(事件类已从菜单项中删除)。这不方便,因为用户仍在帐户部分。

是否可以将菜单的类设置为事件直到单击另一个菜单? 或者 直到页面属于某个 Controller ?

例如,将菜单项的类设置为事件状态,直到用户停留在帐户 Controller (在这种情况下)

最佳答案

删除这部分

string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase)

来自

if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
    string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
{
    li.AddCssClass("active");
}

成功了。

如果你有两个指向同一个 Controller 的菜单项,它将无法工作,在这种情况下,两个菜单项都将用 active 类包装

关于javascript - 将导航栏菜单类设置为事件状态,直到单击另一个菜单或直到用户停留在某个 Controller 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22807228/

相关文章:

javascript - 防止 Bootstrap 函数切换下拉菜单

jquery - 我需要从路由容器 div 中选择路由并将其显示在选择选项中

javascript - 如何进行网站导览

css - Bootstrap 文件未在运行时加载

javascript - jspdf header需要重复多页

javascript - HTML 页面重新加载 - 模拟 CTRL+F5

javascript - 如何让一个元素只粘在它的容器顶部

javascript - Javascript如何存储数组

javascript - 下拉菜单位于页面中间,应根据位置打开列表

javascript - 将边框颜色变成背景颜色