Sitecore MVC布局/子布局等效

时间:2014-09-03 22:03:27

标签: sitecore sitecore-mvc

我有几种不同类型的页面需要采用不同的样式,但会从相同的字段中提取信息。

使用带有Sitecore的webforms,我可能会做出这两个不同的子布局。任何一个都可以应用于相同的项目类型。

我正在寻找与Sitecore MVC相同的东西。

我可以创建两个单独的模板并将它们指向控制器上的不同入口点,或者创建一个字段来确定要使用的两种样式中的哪一种。

我想知道是否还有另一个我不知道的选项,就是以某种方式将嵌套的部分视图放在内容编辑手中,就像布局/子布局一样?

2 个答案:

答案 0 :(得分:4)

通常可以通过使多个View Renderings共享同一个Model来处理这种要求。使用视图渲染时,Sitecore本身将成为控制器,并负责将模型与Razor视图(.cshtml)相结合。然后,您可以像使用子布局一样使用“视图渲染”,并将它们应用于模板的标准值,或允许将它们插入到占位符中。

视图渲染不需要具有模型,并且具有仅包含一些脚手架HTML和嵌套占位符的视图渲染是很常见的。示例:

<div class="container">
    @Html.Sitecore().Placeholder("my-nested-placeholder")
</div>

注意:如果需要更高级的逻辑(例如自定义路由,查询字符串解析等,那么您也可以使用多个Controller Renderings。)


我有时会采用另一种改变风格的方法是应用&#34;身体类&#34;通过模板的标准值访问我的页面。 body类字段可以是一个简单的单行文本字段,对新手用户隐藏。然后,您可以将CSS类注入到不同的页面类型中,并使用CSS继承更改和/或定位标记中的元素。

答案 1 :(得分:3)

Sitecore MVC中的子布局相当于View Renderings和Controller Renderings(正如Derek已经说过的那样)。我还建议创建两个单独的View Renderings并共享相同的模型。

另一种选择条件渲染时使用哪种渲染的方法。如果您有相同的项目请求并且需要针对多个条件的不同视图,则可能值得一试。一个很好的起点是blog post from John WestRules Engine Cookbook