如何使用剃刀脚本为Umbraco中的当前子菜单项设置样式

时间:2012-04-05 11:50:26

标签: razor menu umbraco

我有以下代码,可以根据当前文档创建子菜单。该文档有子项,我用它来构建子菜单。

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

我知道我可以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>
    }
}

1 个答案:

答案 0 :(得分:4)

为什么不使用DynamicNode而不是Document,然后使用帮助程序检查并添加类?例如:

<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对象。)