2014-09-03 67 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