如何控制使用MvcSiteMap()呈现的类名.Menu()?

时间:2016-06-28 15:04:29

标签: c# asp.net-mvc mvcsitemapprovider

使用Nuget包" MvcSitemapProvider Mvc5"时,我想学会使用以下技术,只想显示整个站点地图的特定分支。

@Html.MvcSiteMap().Menu(new { name = "Mammals" });

虽然呈现了正确的内容,但不幸的网站效应是类名与渲染列表一起定义。我称之为不幸,因为Bootstrap凭借ID和类名称将其呈现为菜单。我希望它是一个简单的无样式列表。

我的问题是,是否有一种方法可以覆盖它,以便我可以拥有没有任何ID或类名的无序列表 - 或者可能指定我选择的名称?

<ul id="menu" class="nav navbar-nav">
   <li>
   @* sitemap content... *@

1 个答案:

答案 0 :(得分:0)

这是一种可能的方法,但我谨慎介绍它,因为它改变了现有的帮助器。由于我不打算将MVC Sitemap Provider用于水平菜单,这符合我的目的。

我在Views > Shared > DisplayTemplates中找到了文件“MenuHelperModel.cshtml”并进行了此更改:

@*
    This is the original. I took this out so it wouldn't be renderd as a menu.
    <ul id="menu" class="nav navbar-nav">
    This is adapted so that I can show parts of the sitemap as
         plain lists and not as menus.
*@
<ul>
    @foreach (var node in Model.Nodes)
    {
        <li>
            @Html.DisplayFor(m => node)
            @if (node.Children.Any())
            {
                @Html.DisplayFor(m => node.Children)
            }
        </li>
    }
</ul>