1

我有一个 asp.net mvc4 解决方案。

我在左侧有一个菜单。默认情况下,此菜单是关闭的。

在此处输入图像描述

如果我单击一个项目,则会显示一个子菜单。

在此处输入图像描述

问题是当我导航到另一个页面时,子菜单的打开/关闭状态被忘记了。显示新页面,所有子菜单仍然关闭。我想保留这些子菜单的打开/关闭状态。我该如何进行?

这是我左侧菜单的一部分:

<div class="page-sidebar">
    <ul>
        <li class="dropdown" data-role="dropdown">
            <a><i class="icon-flip-2"></i> Transports</a>
            <ul class="sub-menu light sidebar-dropdown-menu">
                <li>@Html.ActionLink("En cours", "SearchTransportsAA", "Transp")</a></li>
                <li>@Html.ActionLink("Passés", "SearchTransportsBB", "Transp")</a></li>
                <li>@Html.ActionLink("Factures", "SearchTransportsCC", "Transp")</a></li>
            </ul>
        </li>
        <li class="dropdown" data-role="dropdown">
            <a><i class="icon-drawer-2"></i> Autorisations</a>
            <ul class="sub-menu light sidebar-dropdown-menu open">
                <li>@Html.ActionLink("Valides", "SearchAutorisAA", "Transp")</a></li>
                <li>@Html.ActionLink("Périmés", "SearchAutorisBB", "Transp")</a></li>
                <li>@Html.ActionLink("Recherche", "SearchAutorisCC", "Transp")</a></li>
            </ul>
        </li>
        ...
        ...

正如您在上面看到的,当将“打开”添加到类时,菜单被标记为打开。

4

2 回答 2

0

您可以这样做的一种方法是让具有此侧菜单的视图继承自具有包含所选子菜单项的属性的模型

public class ViewWithSideMenu
{
    public ViewWithSideMenu(string menuItem)
    {
       MenuItem = menuItem;
    }

    public string MenuItem { get;set; }
}

视图模型:

public class MyViewmModel : ViewWithSideMenu
{
    public MyViewmModel() : base("someMenu") {}
}

看法:

<ul class="sub-menu light sidebar-dropdown-menu@(Model.MenuItem == "someMenu"? " open" : "")">

这种方法只会根据我们所在的页面打开一个菜单,它不会真正记住用户点击了什么,如果保持用户选择对您非常重要,您有 2 个选项,

  • 每次请求都将它们发送回服务器(不是很好,开销太大)
  • 继续使用 ajax 请求更新内容,而不是完全重新加载页面,在这种情况下,您保持菜单不变,并将所有请求转换为 ajax,并用 ajax 响应替换内容
于 2013-01-25T19:16:22.870 回答
0

你可以试试这个,它对我有用:D

<script type="text/javascript">
    $(document).ready(function () {
        $("a[href='"+ window.location.pathname +"']").parents(".hidden-ul").css("display", "block");
    });
</script>
于 2016-01-21T19:41:48.090 回答