比方说,我创建了名为从管理面板中的“主菜单”的菜单,我需要定制默认的标记,比如假设我想修改/替换<ul>
<li>
以及周围<article>
和<nav>
标记。
我认为我必须要拿出我的是这样的Parts.MenuWidget.cshtml
备用模板。
<ul class="a b c">
for each item in menuItems:
display("<li>" + item + "</li>")
end
</ul>
我该怎么做,在果园?
这是相当简单的。
你可以先创建一个替代你MenuWidget像这样:
Parts.MenuWidget-MyZoneName.cshtml
<nav>
<div class="logo">
@Html.Partial("_Logo")
</div>
<ul>
@*Display all the stuff added in the admin*@
@DisplayChildren(Model.Menu)
@*Add additional stuff. Of course you could also add it as MenuItem to the Menu-Model*@
@if ( Request.IsAuthenticated )
{
if ( Authorizer.Authorize(StandardPermissions.AccessAdminPanel) )
{
<li>
<a href="/Admin">
Admin
</a>
</li>
}
<li>
<a href="~/Example1">
Extra1
</a>
</li>
}
else
{
<li>
<a href="~/Example2">
Extra2
</a>
</li>
}
</ul>
</nav>
再发展下去,做你的MenuItems类似的东西。 例如:
MenuItemLink.cshtml
<a href="@Model.Href" class="my-super-cool-custom-link">@Model.Text</a>
这是值得一提的另一件事是,既可以只对像上述MenuItemLink特定形状提供替代或只是提供用于基本菜单项形状,这将随后被用于存在每菜单项类型的替代。
(也许这些都不是最好的例子,但我想他们会做的工作;))
更新 :为了删除/修改标签可以为MenuItem.cshtml创建一个备用,并期待在这一部分:
if (HasText(renderedMenuItemLink))
{
var tag = Tag(Model, "li");
@tag.StartElement
@renderedMenuItemLink
if (items.Any())
{
<ul>
@DisplayChildren(Model)
</ul>
}
@tag.EndElement
}