2014-11-22 94 views
0

在Sitecore MVC中考慮這種情況:我有一個渲染叫做渲染A,它是一個帶有佔位符(placeholder-a)的DIV。然後我有第二個渲染,名爲渲染B,我把它放在placeholder-a裏面。Sitecore:獲取父級渲染參數

有沒有一種方法可以讓我的渲染B代碼讀取渲染A的渲染參數?

+0

我不認爲你在這裏獲得父級渲染。你正在看兄弟的效果圖,在這種情況下是以前的效果圖。看@Varun Nehra解決方案。你可能會得到渲染列表並找到與當前匹配的並執行-1。當然這假定你的渲染順序永遠不會改變,可能有更好的解決方案。 – Anicho 2014-11-28 11:23:13

回答

0

開箱即可使用,因爲要調用RenderRendering管道中的每個渲染佔位符都是分開的。

我做了overriding placeholder control並允許通過佔位符傳遞附加參數。

例如

@Html.SitecoreExtended().Placeholder("extendedForRendering", new {ExampleRouteValue1 = "Sitecore MVC Placeholder with rendering view"}) 

在這種情況下,我能夠通過佔位符從父視圖轉移到子視圖所需的參數。

0

安東提到你不能得到家長的渲染,但是卻可以得到當前頁面上的所有效果圖的列表如下:

var pageContext = Sitecore.Mvc.Presentation.PageContext.CurrentOrNull; 
if(pageContent!=null) 
    var renderings = pageContext.PageDefinition.Renderings; 

一旦你有,你可以看一下佔位符值的效果,參數等 另一種可能性,不知道這是否適用於您,是從當前的渲染上下文中,您總是可以得到兒童渲染。希望這有助於。

0

看起來像渲染一個代碼首先被執行,你是否可能在會話/緩存中添加渲染參數?然後在渲染B中訪問它?