我正在尝试覆盖实际区域模板的渲染。
它呈现如下:
<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),但没有运气。
答案 0 :(得分:4)
此模板遵循形状的Attribute和Classes属性,并根据Orchard的约定设置Id字段。因此,对于开发人员来说,具有此代码的模板的行为与预期完全相同。
@{
Model.Id = string.Concat("zone-", Model.Hint.ToLowerInvariant());
var tag = Tag(Model, "section");
}
@tag.StartElement
@DisplayChildren(Model)
@tag.EndElement
如果要覆盖例如内容区域,请在主题项目的Views文件夹中创建名为zone-content.cshtml
的页面,并将上面的代码复制到其中。
答案 1 :(得分:1)
你可以按照Bertrand的建议(这可以让你更好地控制渲染区域中的每个元素),或者@DisplayChildren(Model)
。
答案 2 :(得分:0)
您需要做的是枚举它自身下面的形状,并在每个形状上调用Display。转换为IEnumerable应该可以解决问题。