如何覆盖Orchard CMS中导航区域的渲染?

Zac*_*ack 14 asp.net-mvc dynamic orchardcms razor asp.net-mvc-3

我是Orchard的新手,所以我可能不知道我在做什么.

我已经想出如何覆盖不同的形状,但将一个cshtml文件放在View文件夹中,其名称与形状相同.

另外,我在Core Orchard文件下找到了Menu和MenuItem形状的cshtml文件.

但是,我没有看到名为Navigation的形状,我也不太了解Zones的工作原理.

我搜索了代码并且无法弄清楚导航是如何呈现的,尽管我找到了一些代码.

我想要覆盖导航渲染的原因是它在UL周围呈现DIV和NAV标记.我宁愿只渲染资产净值和UL.

Pio*_*myd 11

区域也是形状,但它们在代码(Core/Shapes/CoreShapes.cs)中声明,而不是像大多数形状一样在.cshtml文件中声明.此外,没有称为导航的形状,因为区域是在运行时动态创建的 - 这些名称由所使用的主题提供.

区域具有区域__ [ZoneName] 形式的默认替代项.这意味着您只需将Zone-Navigation.cshtml文件放在主题文件夹的/ Views文件夹中即可覆盖导航区域渲染.

  • *Menu*(呈现'nav'元素)和*MenuItem*(呈现单个项目)是形状,因此您可以通过在您的*Menu.cshtml*和/或*MenuItem.cshtml*文件中添加它们来覆盖它们主题*/查看*文件夹.看一下默认的渲染方式 - 你可以在*Core/Shapes/Views*文件夹中找到它们.BTW - @Display()方法用于渲染形状对象(应提供此类对象).如果需要手动渲染区域内容 - 将模型(包含当前区域形状对象)转换为IEnumerable <dynamic>并为每个项目调用Display(item). (4认同)