c# – 如何控制Orchard中菜单的渲染
发布时间:2020-12-15 21:47:43 所属栏目:百科 来源:网络整理
导读:我有以下问题:我在Orchard建立一个网站,并且必须应用一些设计公司的设计.他们提供了html和CSS(LESS),我必须把它变成一个主题. 除了菜单之外,我大部分时间都完成了.我想在下面的代码中将一个类应用于nav标签,但我不能为该结束渲染任何替代. article class="w
我有以下问题:我在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) 解决方法
我认为您可以在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |