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>
        ...
        ...

上記のように、'open'がクラスに追加されると、メニューはオープンとしてマークされます。

4

2 に答える 2

0

これを行う 1 つの方法は、このサイド メニューを持つビューを、選択したサブメニュー項目を含むプロパティを持つモデルから継承させることです。

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 に答える