如何控制使用 MvcSiteMap().Menu() 呈现的 class 名称?
How can I control the class name rendered with use of MvcSiteMap().Menu()?
在使用 Nuget 包 "MvcSitemapProvider Mvc5" 时,我学会了在只想显示整个站点地图的特定分支时使用以下技术。
@Html.MvcSiteMap().Menu(new { name = "Mammals" });
虽然呈现了正确的内容,但不幸的站点效应是 class 名称与呈现的列表一起定义。我称之为不幸,因为 Bootstrap 凭借 ID 和 class 名称将其呈现为菜单。我希望它是一个简单的无样式列表。
我的问题是是否有一种方法可以覆盖它,以便我可以拥有没有任何 ID 或 class 名称的无序列表 -- 或者可能分配我选择的名称?
<ul id="menu" class="nav navbar-nav">
<li>
@* sitemap content... *@
这是一种可能的方法,但我谨慎地提出它,因为它会更改现有的助手。由于我不打算将 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>
在使用 Nuget 包 "MvcSitemapProvider Mvc5" 时,我学会了在只想显示整个站点地图的特定分支时使用以下技术。
@Html.MvcSiteMap().Menu(new { name = "Mammals" });
虽然呈现了正确的内容,但不幸的站点效应是 class 名称与呈现的列表一起定义。我称之为不幸,因为 Bootstrap 凭借 ID 和 class 名称将其呈现为菜单。我希望它是一个简单的无样式列表。
我的问题是是否有一种方法可以覆盖它,以便我可以拥有没有任何 ID 或 class 名称的无序列表 -- 或者可能分配我选择的名称?
<ul id="menu" class="nav navbar-nav">
<li>
@* sitemap content... *@
这是一种可能的方法,但我谨慎地提出它,因为它会更改现有的助手。由于我不打算将 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>