2

我正在尝试覆盖实际区域模板的呈现。

它呈现如下内容:

<div class="zone zone-hero" shape-id="13">      

    <div class="inner" shape-id="14">
        content is stuffed in here
    </div>

</div>

我发现如果我将 Zone.cshtml 放入模板的根目录,我可以覆盖它的渲染。我想不通的是如何让它呈现它的小部件和内容(如果存在)。我尝试使用@Display(Model.Content),但没有运气。

4

3 回答 3

4

此模板尊重形状的 Attribute 和 Classes 属性,并根据 Orchard 的约定设置 Id 字段。因此,对于开发人员而言,带有此代码的模板的行为与预期完全一致。

@{
    Model.Id = string.Concat("zone-", Model.Hint.ToLowerInvariant());
    var tag = Tag(Model, "section");
}
@tag.StartElement
@DisplayChildren(Model)
@tag.EndElement

例如,如果您想覆盖 Content 区域,zone-content.cshtml请在主题项目的 Views 文件夹中创建一个名为的页面,并将上面的代码复制到其中。

于 2014-01-22T14:42:28.647 回答
1

您可以按照 Bertrand 的建议进行操作(这使您可以更好地控制渲染区域中的每个元素),或者执行@DisplayChildren(Model).

于 2013-02-27T05:24:34.903 回答
0

您需要做的是枚举它自身下的形状并在每个形状上调用 Display。转换为 IEnumerable 应该可以解决问题。

于 2013-02-26T07:28:00.533 回答