自定义内容部分的包装 - Orchard CMS

时间:2011-05-06 05:51:03

标签: asp.net asp.net-mvc asp.net-mvc-3 razor orchardcms

使用Orchard管理员,我创建了一个名为'Spotlight Wrapper'的新内容部分,其中包含3个HTML字段。然后,我创建了一个名为“模板1”的内容类型,并为其指定了'Spotlight Wrapper'。然后,我创建了一个名为“主页”的新“模板1”内容项。然后我创建了一个名为Fileds_Contrib.Html-Spotlight Wrapper.cshtml的文件来包装'Spotlight Wrapper'中的每个HTML字段,这样就可以了。我现在补充说:

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

并创建:

Views\Parts.SpotlightWrapper.cshtml

试图将整个'Spotlight Wrapper'内容部分包装成一个但似乎无法使其工作?

1 个答案:

答案 0 :(得分:2)

你声明了一个包装器,我猜这会导致循环引用,因为你尝试用自己包装Parts_SpotlightWrapper形状。 Wrappers只是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