我使用 Orchard admin 创建了一个名为 'Spotlight Wrapper' 的新内容部分,其中包含 3 个 HTML 字段。然后,我创建了一个名为“模板 1”的内容类型,并为其分配了 “Spotlight Wrapper”。然后我创建了一个名为“主页”的新“模板 1”内容项。然后,我创建了一个名为 Fileds_Contrib.Html-Spotlight Wrapper.cshtml 的文件,以将每个 HTML 字段包装在“Spotlight Wrapper”中,并且这是有效的。我现在添加了:
<Place Parts_SpotlightWrapper="Content:before;Wrapper=Parts_SpotlightWrapper" />
并创建了:
Views\Parts.SpotlightWrapper.cshtml
试图将整个“Spotlight Wrapper”内容部分包装在一个但似乎无法让它工作?
最佳答案
您声明了一个包装器,我猜这会导致循环引用,因为您尝试用自身包装 Parts_SpotlightWrapper 形状。 包装器只是 Razor (cshtml) 代码的单独片段,充当给定形状的父级。
要实现您想要的行为,您应该创建一个单独的 .cshtml 文件(例如 MyWrapper.cshtml),其中包含必要的包装器 HTML 代码并将其附加到您现有的部分,如下所示:
<Place Parts_SpotlightWrapper="Content:before;Wrapper=MyWrapper" />
包装器代码可能看起来像。像这样:
<ul>
@Display(Model.Child)
</ul>
顺便说一句 - 看看它是如何在 Orchard.Widgets 中完成的.有两个包装器 Widget.Wrapper 和 Widget.ControlWrapper 包装 Widget 形状。 这些声明不在 Placement.info 文件中(就像您所做的那样),而是硬编码在 Shapes.cs 中形状定义,尽管最终效果完全相同。 Placement.info 的技术只是稍后作为快捷方式介绍的。
HTH
关于asp.net - 自定义内容部分的包装器 - Orchard CMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5907302/