【问题标题】:Sitecore MVC Layout/Sublayout EquivalentSitecore MVC 布局/子布局等效
【发布时间】:2014-09-03 22:03:26
【问题描述】:

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

使用带有 Sitecore 的网络表单,我可能会制作这两种不同的子布局。任何一个都可以应用于相同的项目类型。

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

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

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

【问题讨论】:

  • 您应该使用视图渲染或控制器渲染。在您看来,您使用占位符,例如 derek answer

标签: sitecore sitecore-mvc


【解决方案1】:

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

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

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

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


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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多