1

我有以下代码基于当前文档创建子菜单。该文档有孩子,我用它来构建一个子菜单。

如何检查我何时在当前项目上?当该项目是当前项目时,我想在子菜单上设置该项目的样式。

我知道我可以if (Model.Id == page.Id)找到当前项目,但这不适用于 Documents。

这是我要修改的代码。

@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

为什么不使用 DynamicNode 而不是 Document,然后使用 helper 来检查和添加类?例子:

<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 回答