我需要從我的子佈局中以編程方式獲取渲染參數。目前,我這樣做,因爲這樣的:當頁面上有多個相同類型的子佈局時,獲取渲染參數
var sublayout = ((Sublayout)this.Parent);
//Get all rendering
var renderings = Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device, true);
//Get the first rendering that matches the current sublayout's path
var sublayoutRendering = renderings.FirstOrDefault(r => r.RenderingItem.InnerItem["Path"] == sublayout.Path);
if (sublayoutRendering != null)
Response.Write(sublayoutRendering.RenderingItem.Parameters);
該解決方案從this question來了,完美的作品,直到我在頁面上相同類型的兩個sublayouts。當明顯發生這種情況時renderings.FirstOrDefault(r => r.RenderingItem.InnerItem["Path"] == sublayout.Path);
始終返回匹配兩個子層佈局的子層佈局路徑的第一個渲染參數。
我該如何區分它們?我看不到任何可以用來將它們綁在一起的東西!
編輯:
要清楚,我加我sublayout在演示>詳細,然後當我點擊我的控制我設定在「控制屬性」窗口中的字段。我有一個名爲Module Source的字段,它始終回到相同的位置 - 它始終填充爲訂單中最高的一個。每個子圖層的值肯定不同,但我無法從渲染中獲取它們。
這仍然只從相同類型的第一個項目獲取參數。當你說你將它添加到你的SubLayout基地你是什麼意思?我在我打電話的函數中設置了這個設置 - 是否會有所作爲? – Jon
我所有的Sitecore子佈局都是從我自己的Sublayout類繼承而來的,我添加了一些我通常需要的基本功能。我已經在Sitecore版本6.1-6.5上對此進行了測試,在單個頁面上有多個相同子圖層的實例。 我在我的sublayout上使用渲染參數模板來控制我的參數。但除此之外,我沒有看到問題可能。你是否讓你的參數檢查特定的sublayouts代碼隱藏? – Sandbeck
不,我們有一個需要用戶控制的函數,我們通過查看父級來加載SubLayout,類似於您的CurrentSublayout 屬性。你在哪裏改變Sitecore sublayout繼承的東西? – Jon