我有几种不同类型的页面需要采用不同的样式,但会从相同的字段中提取信息。
使用带有Sitecore的webforms,我可能会做出这两个不同的子布局。任何一个都可以应用于相同的项目类型。
我正在寻找与Sitecore MVC相同的东西。
我可以创建两个单独的模板并将它们指向控制器上的不同入口点,或者创建一个字段来确定要使用的两种样式中的哪一种。
我想知道是否还有另一个我不知道的选项,就是以某种方式将嵌套的部分视图放在内容编辑手中,就像布局/子布局一样?
答案 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 West和Rules Engine Cookbook。