1

現在のドキュメントに基づいてサブメニューを作成する次のコードがあります。ドキュメントには子があり、これを使用してサブメニューを作成します。

現在のアイテムを使用していることを確認するにはどうすればよいですか?サブメニューのアイテムが現在のものであるときに、そのアイテムのスタイルを設定したい。

現在のアイテムを見つけるためにできることは知っていif (Model.Id == page.Id)ますが、これはドキュメントでは機能しません。

これは私が変更したいコードです。

@foreach (var node in new Document(999).Children)
{
    <li>@node.Id</a>
        @{ var mychildren = node.Children;
           if (mychildren.Count() > 0)
           {
            <ul>
                <li>@node.id</a></li>
                @foreach (var snode in mychildren)
                {
                    <li>@snode.id</a></li>
                }
            </ul>  
        }
    </li>
    }
}
4

1 に答える 1

4

Document の代わりに DynamicNode を使用してから、ヘルパーを使用してクラスを確認して追加してみませんか? 例:

<ul>
@foreach (var node in new Library.NodeNyId(999).Children)
{
    <li@getClasses(node)><a href="@node.NiceUrl">@node.Name</a></li>
    @{
        var mychildren = node.Children;
        if (mychildren.Count() > 0)
        {
        <ul>
            @foreach (var snode in mychildren)
            {
                <li@getClasses(snode)><a href="@snode.NiceUrl">@snode.Name</a></li>
            }
        </ul> 
        }
    }
    </li>
    }
}
</ul>

@helper getClasses(dynamic node)
{
    string classes = "";

    if (Model.Id == node.Id)
    {
        classes = " class=\"active\"";
    }

    @Html.Raw(classes);
}

(Library.NodeById メソッドは DynamicNode オブジェクトを返します。)

于 2012-04-05T14:57:04.560 に答える