我有以下问题:我在Orchard建立一个网站,并且必须应用某个设计公司的设计。他们提供了html和CSS(+ LESS),我必须把它变成一个主题。 除了菜单之外,我大部分时间都完成了。我想在以下代码中将一个类应用于 nav 标记,但是我无法为该结束渲染任何替代项。
<article class="widget-navigation widget-menu-widget widget" shape-id="18">
<nav shape-id="19">
<ul class="menu menu-main-menu" shape-id="19">
<li class="current first" shape-id="22">
<a href="/" shape-id="22">Home</a>
</li>
<li shape-id="24">
<a href="/Something1" shape-id="24">Something1</a>
</li>
<li shape-id="26">
<a href="/Something2" shape-id="26">Something2</a>
</li>
<li class="last" shape-id="28">
<a href="/Something3" shape-id="28">Something3</a>
</li>
</ul>
</nav>
</article>
如何影响菜单的渲染,以便我可以应用适当的CSS?我可以制作的唯一替代品只包含:
<a href="@Model.Href">@Model.Text</a>
或:
@Display(Model.Menu)
答案 0 :(得分:1)
我认为您可以在Views / Menu-Main.cshtml中为菜单创建自定义形状,如this page所述。从那以后,你几乎可以做任何你想要的形状。例如
@{
// Model is Model.Menu from the layout (Layout.Menu)
var tag = Tag(Model, "ul");
var items = (IList<dynamic>)Enumerable.Cast<dynamic>(Model.Items);
if (items.Any()) {
items[0].Classes.Add("first");
items[items.Count - 1].Classes.Add("last");
}
}
<nav class='my-custom-class'>
@tag.StartElement
@DisplayChildren(Model)
@tag.EndElement
</nav>
如果我不是100%正确的话,我实际上没有尝试过这样的道歉,但至少应该让你朝着正确的方向前进。
另外,上面的示例代码只是原始菜单代码的略微修改版本,关于Orchard的最佳部分是它的开源代码......您可以查看原始代码here