3

使用 Orchard 管理员,我创建了一个名为“Spotlight Wrapper”的新内容部分,其中包含 3 个 HTML 字段。然后我创建了一个名为“模板 1”的内容类型,并为其分配了“Spotlight Wrapper”。然后,我创建了一个名为“主页”的新“模板 1”内容项。然后,我创建了一个名为 Fileds_Contrib.Html-Spotlight Wrapper.cshtml 的文件,以使用 an 将“Spotlight Wrapper”中的每个 HTML 字段包装起来,这是有效的。我现在添加了:

<Place Parts_SpotlightWrapper="Content:before;Wrapper=Parts_SpotlightWrapper" />

并创建:

Views\Parts.SpotlightWrapper.cshtml

试图将整个“Spotlight Wrapper”内容部分包装在一个但似乎无法让它工作?

4

1 回答 1

2

您声明了一个包装器,我猜它会导致循环引用,因为您尝试将 Parts_SpotlightWrapper 形状与自身包装起来。包装器只是单独的 Razor (cshtml) 代码片段,它们充当给定形状的父级。

要实现您想要的行为,您应该创建一个单独的 .cshtml 文件(例如 MyWrapper.cshtml),其中包含必要的包装器 HTML 代码,并将其附加到您现有的部分,如下所示:

<Place Parts_SpotlightWrapper="Content:before;Wrapper=MyWrapper" />

包装器代码可能看起来像。像这样:

<ul>
    @Display(Model.Child)
</ul>

顺便说一句 - 尝试看看它是如何在Orchard.Widgets中完成的。有两个包装器Widget.WrapperWidget.ControlWrapper来包装Widget形状。这些声明不在 Placement.info 文件中(如您所做的那样),而是在Shapes.cs形状定义中硬编码,尽管最终效果完全相同。Placement.info 的技术是后来作为捷径引入的。

高温高压

于 2011-05-11T11:29:17.893 回答