View端的MvcSiteMapProvider使用razor获取当前节点的父节点

时间:2013-03-21 14:04:40

标签: asp.net-mvc razor breadcrumbs mvcsitemapprovider

我正在使用MVC站点地​​图提供程序来创建一些面包屑

我想做什么;使用剃刀在视图上创建面包屑

我想做一些如下所示的电话

<div id="navbar">
    <div>YOU ARE HERE:
        // There is no calls like this but you get the idea
        @if (SiteMap.CurrentNode.HasParentNodes == true) 
        {
            // I'd like to loop trough each parent till the RootNode
            foreach (SiteMapNode Snode in SiteMap.CurrentNode.ParentNodes)
            {
                <a href="@Snode.Url">@Snode >></a> 
            }
        } else {
            // If there is no parent just show current node
            <a href="@SiteMap.CurrentNode.Url.ToString()">@SiteMap.CurrentNode</a>
        }
    </div>
    <div>@DateTime.Now.Date.ToLongDateString()</div>
</div>

那么如何使用Razor on View实现这一目标呢?

1 个答案:

答案 0 :(得分:1)

@Html.MvcSiteMap().SiteMapPath() HTML帮助程序已经执行此操作。这是一个模板控件,您可以通过编辑/Views/Shared/DisplayTemplates/SiteMapPathHelperModel.cshtml文件进行修改,因此基本上您可以获得所需的任何HTML输出。

如果您仍然希望在知道之后按照自己的方式执行此操作,也可以使用MvcSiteMapProvider.SiteMaps.Current.CurrentNode.Ancestors属性(版本4及更高版本)执行此操作。