2014-09-03 34 views
1

我有几个不同类型的页面需要不同的样式,但会从相同的字段中获取信息。Sitecore MVC Layout/Sublayout Equivalent

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

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

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

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

+0

你应该使用viewrendering或controllerendering。在你看来,你使用了像derek answer这样的占位符 – ThinhLe 2017-05-18 10:39:52

回答

4

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

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

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

注意:如果需要更高级的逻辑(如自定义路由,查询字符串分析,等等,那么你可以只以及使用多个控制器效果图)。


我有时会改变样式的另一种方法是通过模板的标准值将“body class”应用到我的页面。主体类字段可以是隐藏给新手用户的简单单行文本字段。然后,您可以将CSS类注入到不同的页面类型中,并使用CSS继承修改和/或标记标记中的元素。

3

等效于Sitecore MVC中的子层布局是查看渲染和控制器渲染(正如Derek已经说过的)。我也建议创建两个独立的视图渲染并共享相同的模型。

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